gpt4 book ai didi

c# - 为特定应用程序禁用 Windows 10 缩放

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:58 24 4
gpt4 key购买 nike

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

我找到了 this thread但它已有 8 年历史,当时 Windows 10 还不存在,另一位用户给出了答案,但它也不起作用。

该行为的一个简单示例主要发生在仪表板上,因为这类屏幕上有很多控件和小部件,它们对于机器人机械 Controller 之类的东西至关重要。

一个示例仪表板窗口的最小尺寸为 1900 x 980(在两个方向上可能小 4-5 个像素,但我们四舍五入以获得四舍五入的位置 XY 值)。此分辨率略低于 1920 x 1080。它不能更小,但如果你有一个更大的屏幕,比如 4K,你可以把它变大,你所获得的只是 TreeView 中的更多日期,在 3d 引擎渲染器中更好的显示等等。

所以有些用户的笔记本电脑屏幕较小,例如 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、字体和无,但它根本不起作用。无论如何,它仍然会拉伸(stretch)屏幕。更改表单的字体也无济于事,我设法让它直接在表单中为几个标签工作,但组框中的任何内容都无法更改或与其他内容相比大小增加两倍。

要点:

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

那么现在有什么可以解决或解决这个问题的方法吗?

最佳答案

您是否尝试让您的 Process DPI 感知?

您可以通过一个 pinvoke 来完成:

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

然后打电话

SetProcessDPIAware();

在您的 Main 中或创建一个 Manifest 并添加

<dpiAware>true</dpiAware>

有教程here .清除它 DPIAware 应该会阻止窗口自行缩放。

关于c# - 为特定应用程序禁用 Windows 10 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51768519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com