加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows应用程序 – DPI问题

发布时间:2020-12-14 02:49:03 所属栏目:Windows 来源:网络整理
导读:我们现有的基于Win32 MFC的应用程序存在问题.它在使用高dpi设置的显示器上无法正确呈现.更具体地说,在选择了120 dpi的 Windows XP中,应用程序中有几个地方可以放大文本但不是它们的容器(文本溢出它的按钮边界等).当选择 96 dpi并选择“使用XP风格dpi缩放”时
我们现有的基于Win32 MFC的应用程序存在问题.它在使用高dpi设置的显示器上无法正确呈现.更具体地说,在选择了120 dpi的 Windows XP中,应用程序中有几个地方可以放大文本但不是它们的容器(文本溢出它的按钮边界等).当选择> 96 dpi并选择“使用XP风格dpi缩放”时,Windows 7(和Vista)中也会出现这种情况.如果没有选择xp样式缩放,那么我理解Win7使用DPI虚拟化.使用DPI虚拟化时,一切看起来都很好(好的东西很模糊,但至少它们是正确的).默认情况下,Win7 120 dpi使用xp样式缩放,而下一个设置(144 dpi)则不然.所以我们的应用程序在144 dpi时看起来是正确的,但在120 dpi时错误.

如果我编辑应用程序清单以将应用程序声明为“DPI感知”,那么这将改变DPI虚拟化(但不是XP风格的dpi缩放),这让我无处可去.事情看起来仍然很糟糕(120 dpi没有变化,144 dpi现在已经破了).

我需要解决这个问题,我已经尝试过阅读DPI /扩展问题,这是一次学习经历.到目前为止,我还没有找到合适的解决方案.目前,我目前无意进行彻底和正确的修复(应用程序根据dpi正确地缩放所有元素).这将涉及很多重写.我认为有两种可能的解决方案.一个是关闭任何类型的DPI缩放.这意味着如果用户Win7系统设置为120 dpi,那么他们系统上的所有内容都会看起来很好/很大但我们的应用程序看起来不错,但与其他应用程序中的其他内容相比会很小.第二个解决方案是如何强制我们的应用程序使用DPI虚拟化,但永远不会使用XP风格的dpi缩放.我希望这是一个应用程序端更改,而不是依赖于最终用户必须进行Windows配置更改.

到目前为止,我还没有找到解决问题的方法.

有人可以更熟悉这个主题,请回复并指出我的正确方法吗?

谢谢

解决方法

您无法在120 DPI设置上强制DPI虚拟化.我自己对这个产品进行了调查,因为在高DPI中看起来很模糊,这似乎是一个很好的权衡.

我们最终完全重写了UI定位和缩放,以便在高DPI设置中使用字体缩放来正确缩放.客户端现在可以完全识别DPI并在任何DPI设置中正确扩展.

在我们的案例中,为了一个相当复杂的客户,正确地完成这项工作需要花费3个月的时间.

我们有一个我们从未尝试过的次要计划,但它可能适合您:在启动时读取OS的DPI比例因子.然后通过此因子减少您拥有的所有字体实例,以便在Windows再次缩放字体时,它们将恢复为UI可以适合它们的大小.当然,具有高DPI设置的用户不会在应用程序中获得更大的字体,但它至少可以使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读