我们正在使用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 。
如何在此代码中获得相同的宽度,请建议我使用measuretring()测量大小的一些想法。
等待建议........
答案 0 :(得分:1)
这是因为125%默认情况下表现不同。例如,在Windows 7中,如果更改DPI设置,由于 Windows XP样式模式,应用程序将知道当前的DPI设置。但是,如果设置为150%,则默认情况下不会设置此复选框,因此应用程序将在DPI unaware模式下工作,这意味着MeasureString
将返回与96 DPI相同的结果,并且调整大小将由Windows自动执行。
通常您可以忽略结果,因为无论如何都会在您的应用程序中放大尺寸。如果您仍想获取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);