我在某些应用程序(主要是仪表板)上遇到问题,某些用户使用Windows显示比例缩放来增大其图标,但这在我的软件中造成了巨大的问题。我正在寻找一种方法来完全禁用应用程序的缩放比例,而将应用程序缩放为显示分辨率的像素。
我发现this thread,但是它已经有8年历史了,当时Windows 10还不存在,另一个用户给出了答案,但是它也不起作用。
这种行为的简单示例主要发生在仪表板上,因为在此类屏幕上有很多控件和小部件,它们对于诸如机器人机械控制器之类的事情至关重要。
一个示例仪表板窗口的最小尺寸为1900 x 980
(可以在两个方向上缩小4-5像素,但是我们四舍五入以获得四舍五入的位置XY值)。该分辨率仅差1920 x 1080
。它不能更小,但是如果您拥有更大的屏幕(例如4K
),并且可以将其放大,那么您获得的只是树状视图中的日期更多,在3d Engine渲染器中的显示效果更好等。
因此,某些用户的笔记本电脑屏幕较小,例如15英寸,最大分辨率为1920 x 1080
,但是他们使用150%的缩放比例,因此我的屏幕最小尺寸在他们的屏幕上变成了2850 x 1470
,这使该应用程序大于屏幕并超出屏幕。
另一个示例,如果我使用的Windows Surface Pro的分辨率为2736 x 1824
,比1920 x 1080
大80%,则窗口的确确实会占用屏幕上原始的1900 x 980
像素。屏幕使其看起来很小,因此如果全屏显示,则所有控件中的信息都会更多。但是,如果您将缩放比例更改为150%,则屏幕现在再次在屏幕上获取2850 x 1470
像素,该像素非常适合高度,但宽度却不足100像素,而100像素足以使右边失去我的屏幕的一部分,那么您将看不到屏幕的最左侧或最右侧。
我尝试了3种自动缩放模式:DPI,字体和无,它根本不起作用。无论如何,它仍然可以拉伸屏幕。更改表单的字体也无济于事,我设法使其一次可以直接在表单中用于少数标签,但是组框内的任何内容都无法更改,或者与其余的相比,其大小增加了两倍。
重要要点:
4.5
和4.6
,但如果需要特定功能,则可以在4.7
中进行编译。1920 x 1080
的限制,该限制约为我们客户的90%那么,如今有什么可以解决或解决此问题的东西?
答案 0 :(得分:0)
您是否尝试让流程DPI知道?
您可以通过pinvoke完成此操作:
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();
并致电
SetProcessDPIAware();
在您的Main中或创建清单并添加
<dpiAware>true</dpiAware>
有一个教程here。 取消选中它,DPIAware应该阻止窗口自行扩展。