Windows 10中的传统应用程序和缩放比例
问题描述:
我们有一个基于Microsoft Access的相当老的应用程序。部分UI仍然是Microsoft Access,其他部分使用WinForms,最新的部分使用WPF(试图逐步摆脱旧部分)。Windows 10中的传统应用程序和缩放比例
我们在Windows 10和高DPI监视器发现了一个奇怪的结垢问题,现在我正在寻找一个治愈这个问题,preferrably一个不是涉及改变旧UI。
为了能够在这种高DPI工作监视Windows的比例应设置为200%。
这就是问题:当用户登录时,将缩放设置为200%,开始我们的应用程序结果的字符串使用太大的字体放置字符串的空间。它看起来像Windows增加了字体大小的字符串,而不是包含字符串的控件的尺寸。更改Windows的缩放比例不能解决问题,在更改缩放比例后不能解决问题后重新启动我们的应用程序。
虽然...当在设置为100%所有的缩放用户登录是好的,后来改变缩放或重新启动应用程序时也是如此。
但是,我们不能,也不会告诉我们的用户始终将Windows的缩放回注销,并在登录时再次增加它的时候100%。
是不是有其他的方式来解决这个问题?
感谢您的帮助(如果有的话)。
答
谷歌上搜索后一点点,我发现至少在我的特殊问题的解决方案。
的Microsoft Access必须设置为true
一个dpiAware
节点的清单文件。改为false
似乎告诉Access不使用微软的“智能”缩放,而是使用某种“哑”缩放。这为我解决了整个问题。
据我知道一个可以创建任何可执行文件来解决与旧应用程序的问题这样的清单文件,但我没有尝试,因为访问被运与已经存在的清单文件。
制作应用程序dpiAware是行不通的。过期的工作,通常,应用程序越旧,程序员就越不注意扩展问题。让WPF在应用程序中变得更糟,它实际上不会自动声明应用程序为dpiAware。最快的“修复”是阻止它执行此操作,将[assembly:System.Windows.Media.DisableDpiAwareness]添加到您的代码中。你可能不太喜欢这个结果,你必须卷起袖子才能让它变得更好。 –
[将应用程序定位到4.7并进行我在此处提出的更改](https://stackoverflow.com/a/43808350/1466046),现在winforms部分也是DPIaware,并且应该解决此问题 – magicandre1981