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 getEnv不区分大小写 getProperty区分大小写
    spring 解析配置文件问题
    (转载)Java里快如闪电的线程间通讯
    quartz中关键类
    HTTP中缓存相关
    (转载)javascript函数作用域和提前声明
    (转载)ETL利器Kettle实战应用解析系列一【Kettle使用介绍】
    rcnn 理解笔记
    打乱图片顺序,按一定比例分别存放
    Python 批量读取文件夹下的图片,并保存在文档下
  • 原文地址:https://www.cnblogs.com/aucy/p/9571969.html
Copyright © 2011-2022 走看看