zoukankan      html  css  js  c++  java
  • 解决WinForm屏幕缩放适配只需修改两个Form的两个属性

    最近要做一个windows下截屏识别文字的程序,调试发现截取的图像显示不完整。

    输出了Screen.PrimaryScreen.Bounds.Width获取的值,结果与实际分辨率不同,所以确定了与我的系统设置了150%的显示缩放有关系。

    网上找答案,各种dpi的计算或是bitmap的处理,折腾我大半个小时还是没找到完美的解决方案。

    我决定打把lol放松放松(解决问题不必过急,一头扎进去反而会当局者迷,先放一放也许会突然地灵机一现)

    在敌方水晶爆炸的那瞬间,我想起了之前做的WPF程序可以自动支持缩放,winform也应该可以吧。

    缩放主要就是form的问题嘛,把form缩放尺寸计算好了,其它控件就可以有依据了。

    我没有去用代码计算,先是把与size相关的form属性都改了一遍,看有什么效果,

    果不其然找到了原因,结论就是:

    AutoSize=True; AutoSizeMode=GrowAndShrink,两个属性完美解决问题。

     

     

    补更:

    MD,我智障了,因为Form上就一个背景图没有控件,所以设置了启用AutoSize后(根据内容自动调整大小)窗体宽度为0看不见了,之前F5运行屏幕截图就会被放大显示不完整,现在看起来就像是屏幕画面缩放正常还以为解决了呢,其实是窗体看不见了。

     

    好在最终还是找到了真实可靠的解决方案……

     

      <application xmlns="urn:schemas-microsoft-com:asm.v3">
        <windowsSettings>
          <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
        </windowsSettings>
      </application>

     

     给项目添加清单文件,加入上面的代码就可以感知DPI的变化了。

     

  • 相关阅读:
    java 异常处理
    前端 网页宽高常用属性
    java 图片裁剪代码
    Eclipse常用设置
    SpringCloud Sleuth入门介绍
    Spring cloud stream【消息分区】
    Spring cloud stream【消息分组】
    Spring cloud stream【入门介绍】
    SpringCloud-分布式配置中心【加密-非对称加密】
    SpringCloud-分布式配置中心【加密-对称加密】
  • 原文地址:https://www.cnblogs.com/aucy/p/9571969.html
Copyright © 2011-2022 走看看