gpt4 book ai didi

c# - 合格双倍显示不正常

转载 作者:太空狗 更新时间:2023-10-30 01:15:36 25 4
gpt4 key购买 nike

我正在尝试制作一些可以使用 qualified double 设置大小的控件,这样无论在哪个屏幕上显示,控件大小都是相同的。

所以我有这个转换器可以将 double 转换为合格的 double :

double effectiveValue = cm;
string qualifiedDouble = effectiveValue + "cm";
LengthConverter lc = new LengthConverter();
double converted = (double)lc.ConvertFrom(qualifiedDouble);

问题是它在系统参数方面不是很有效,例如分辨率或默认系统缩放(我知道它在英文中是怎么称呼的)

enter image description here

您是否知道如何在任何分辨率、任何缩放设置等的任何屏幕上显示完全相同的厘米值。

谢谢

最佳答案

它应该(大部分)有效,我做过几次类似的事情,但你需要确保在你的桌面外观设置(以及显卡设置、演示配置文件等 - 如果你有任何此类软件)中你拥有所有禁用缩放(设置为 100% 正常,无大字体等)。我相信这就是您提到的“系统缩放”。

将其设置为 100% 后,所有 WPF 单元在任何屏幕上都应显示相同。所以 10x10 矩形(或 10cmx10cm)在所有屏幕上看起来应该是一样的。如果您使用合格的,那么它在任何分辨率下看起来都应该相同。从理论上讲,或者更确切地说,从操作系统的角度来看。

问题是,即使操作系统 100% 确定所有计算都很好,一些卡/显示器配置仍然可以向操作系统“谎报”它们的功能。您无法从壁式投影仪中获得实际 DPI。一些具有奇怪尺寸的显示器可以缩放图像并水平或垂直扭曲图像以填充整个屏幕,因此不会出现黑边。您的显卡的软件驱动程序也可以在内部执行此操作,因此操作系统不会知道。 WPF 的 DPI、设备独立单位和合格长度都是关于系统知道什么以及它与真实屏幕的关系。

但是,如果您确保禁用所有系统缩放、屏幕填充、16:9/4:3 转换等,那么您基本上可以期望它能够正确显示。您无法避免让用户配置它。一旦他们这样做了,他们就可以使用您的应用程序将显示的一些简单的“标尺”屏幕来验证结果。如果它仍然是错误的,那么这主要归咎于硬件,你就被卡住了。如果用户真的想让它运行,则需要对其进行更改。

顺便说一句。我还没有找到任何方法来始终 处理“系统缩放”,这是操作系统显示的一个奇怪部分。一开始看起来很简单,只需从注册表/etc 中读取设置并相应地放大/缩小,但后来发现在不同的操作系统版本(例如 winXP 与 win7)上,缩放效果很好有点不同..也许你会找到一种方法,我还没有。我只是要求用户设置为 100%。或者更改硬件,因为当他们已经将它设置为非 100% 时,它几乎总是表明他们的 gpu/显示器有奇怪的分辨率有一些“智能软件”可以做一些额外的缩放..

关于c# - 合格双倍显示不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37486723/

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