gpt4 book ai didi

c# - MeasureString() 为不同的屏幕分辨率提供不同的大小

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:02 29 4
gpt4 key购买 nike

我们使用 Measurestring() 根据文本的长度计算大小。对于不同的屏幕分辨率,MeasureString() 给出不同的大小。

Graphics g;  
Size size = g.MeasureString(GetItemText(this.Items[n]), this.Font).ToSize();
width=size.width;

对于屏幕分辨率 125%size.width=76 和对于 100% 和 150% 的屏幕分辨率,size.width=61

如何在这段代码中获得相同的宽度,请给我一些使用 measurestring() 测量尺寸的想法。

等待建议............

最佳答案

这是因为默认情况下 125% 的行为不同。例如,在 Windows 7 中,如果您更改 DPI 设置,由于 Windows XP 样式 模式,应用程序将知道当前的 DPI 设置。但是,如果您设置 150%,默认情况下不会设置此复选框,因此应用程序将在 DPI 无意识模式下工作,这意味着 MeasureString 将返回与 96 DPI 情况下相同的结果, 调整大小将由 Windows 自动执行。

Windows DPI Setting

通常您可以忽略结果,因为无论如何在您的应用程序中尺寸都会被放大。如果你还想获取Windows的实际DPI值,请看我的回答:https://stackoverflow.com/a/33412669/5114784

然后你可以像这样放大你的绘图(但正如我所说,通常不需要这样做):

// See GetSystemDpi in the referenced post
float zoomFactor = (float)GetSystemDpi() / 96f;
size.Width = (int)(size.Width * zoomFactor);
size.Height = (int)(size.Height * zoomFactor);

关于c# - MeasureString() 为不同的屏幕分辨率提供不同的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33826883/

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