我遇到了一些应用程序问题(主要是仪表板),因为某些用户使用Windows显示缩放功能使其图标变大,但这会在我的软件中引起巨大问题。我正在寻找一种完全禁用应用程序缩放并将应用程序按照显示分辨率的像素进行缩放的方法。
我找到了这个帖子,但它已经有8年历史了,当时还不存在Windows 10,另一个用户给出了答案,但也不起作用。
这种行为的简单示例主要发生在仪表板上,因为这些屏幕上有很多控件和小部件,并且对于机器人机械控制器等关键任务非常重要。
一个示例仪表板窗口的最小尺寸为
因此,一些用户使用最大分辨率为
另一个例子是,如果我使用具有
我尝试了三种自动缩放模式:DPI、字体和无,但它根本不起作用。无论如何,它仍会拉伸屏幕。更改窗体的字体也没有帮助,我设法让它在窗体中直接工作了几个标签,但组合框内的任何内容都无法更改或增长两倍。
重要要点:
我找到了这个帖子,但它已经有8年历史了,当时还不存在Windows 10,另一个用户给出了答案,但也不起作用。
这种行为的简单示例主要发生在仪表板上,因为这些屏幕上有很多控件和小部件,并且对于机器人机械控制器等关键任务非常重要。
一个示例仪表板窗口的最小尺寸为
1900 x 980
(在两个方向上可能会小4-5个像素,但我们四舍五入以获得圆整的XY值)。此分辨率略小于1920 x 1080
。它不能更小,但如果您拥有更大的屏幕,例如4K
,则可以使其更大,从而获得更多的树形视图数据,在3D引擎渲染器中获得更好的显示等。因此,一些用户使用最大分辨率为
1920 x 1080
的小型笔记本电脑屏幕,但他们使用150%的缩放,因此我的屏幕最小尺寸在他们的屏幕上变为2850 x 1470
,使应用程序比屏幕还要大并超出屏幕范围。另一个例子是,如果我使用具有
2736 x 1824
分辨率的Windows Surface Pro,它的大小约比1920 x 1080
大80%,则窗口确实仍然占据屏幕上原始的1900 x 980
像素,这使其看起来相当小,因此如果您全屏它,则可以在所有控件中看到更多信息。但是,如果您将缩放比例更改为150%,则屏幕现在会再次占据屏幕上的2850 x 1470
像素,它在高度上完全适合,但在宽度上我短了100个像素,100个像素足以失去屏幕的右侧部分,您将无法看到最左边或最右边的屏幕部分。我尝试了三种自动缩放模式:DPI、字体和无,但它根本不起作用。无论如何,它仍会拉伸屏幕。更改窗体的字体也没有帮助,我设法让它在窗体中直接工作了几个标签,但组合框内的任何内容都无法更改或增长两倍。
重要要点:
- 项目使用的是 .net
4.5
和4.6
,但如果需要特定功能,编译在4.7
也没有问题。 - WPF 不可行。我们花了3年时间实现它,最终由于第三方 DLL 的性能问题和 3D CAD 性能极差,我们不得不放弃。
- 屏幕已经尽可能地优化,控件数量最少。在数百个屏幕和成千上万个用户控件中,有一半非常接近
1920 x 1080
的限制,这约占我们客户的90%。 - 我收到了一个建议,在客户端电脑上以100%的缩放运行虚拟机,这不受主机电脑的影响。这可能是我的最后手段,因为通过VM特别是CAD卡(如Quadro和FireGL)处理专用视频卡非常困难。
- 一半的用户使用触摸屏,我们试图将所有内容放入一个带有2个滚动条的面板中,但效果很差,并且几乎不能使用。因此,这仅适用于鼠标用户,而这些用户都使用桌面,所以99%的人不会使用缩放,因此他们不会遇到此问题。
所以,现在有什么可以解决或绕过这个问题的方法吗?
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
?来自同一“作者”。我写的一些笔记。 - Jimi