繁体   English   中英

禁用特定应用程序的Windows 10缩放

[英]Disabling windows 10 scaling for specific application

我在某些应用程序(主要是仪表板)上遇到问题,某些用户使用Windows显示比例缩放来增大其图标,但这在我的软件中造成了巨大的问题。 我正在寻找一种方法来完全禁用我的应用程序的缩放比例,而将应用程序缩放到显示分辨率的像素。

我发现了这个线程,但是它已经有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,字体和无,它根本不起作用。 无论如何,它仍然可以拉伸屏幕。 更改表单的字体也无济于事,我设法使它一次可以直接在表单中用于少数标签,但是组框内的任何内容都无法更改,或者与其余的相比,其大小增加了两倍。

重要事项:

  • 项目是.net 4.54.6但是如果我需要特定功能,则在4.7编译它们没有问题。
  • WPF是不可能的。 我们花了3年的时间来实现它,并很快以非常差的性能结束了第三方DLL,而3D Cad的性能简直是糟糕透顶。
  • 屏幕已经用最少的控件进行了优化。 在这数百个屏幕和数千个用户控件中,大约有一半非常接近1920 x 1080的限制,这大约是我们客户的90%
  • 我收到关于在客户端计算机上以100%缩放比例运行虚拟机的建议,不受主机的影响。 这可能是我的最后选择,因为通过虚拟机(尤其是Quadro和FireGL等CAD卡)处理专用视频卡非常困难。
  • 一半的用户使用触摸屏,我们尝试将所有内容放置在带有2个滚动条的面板中,但是这太糟糕了,只能在蓝月亮中工作一次。 因此,这仅对鼠标用户有用,并且这些用户都具有桌面AFAIK,因此其中99%的用户不使用缩放比例,因此不会出现问题。

那么,如今有什么可以解决或解决此问题的方法?

您是否尝试使您的Process DPI意识?

您可以通过pinvoke做到这一点:

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();

并打电话

SetProcessDPIAware();

在您的Main或创建清单并添加

<dpiAware>true</dpiAware>

有一个教程在这里 取消选中它,DPIAware应该阻止窗口自行扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM