[英]Font Size issue with a popup shown at design-time in a WinForms UserControl
我通过在显示之前将比例因子设置为表单找到了一种解决方法。
public void About()
{
float width, height;
using (Graphics graphics = Graphics.FromHwnd(IntPtr.Zero))
{
width = graphics.DpiX / 96;
height = graphics.DpiY / 96;
}
About form = new About();
if (width != 1 || height != 1)
form.Scale(new SizeF(width, height));
form.ShowDialog();
}
它似乎工作正常。
Visual Studio (VS) 设计器中的问题是 Visual Studio 被声明为 DPI-aware,这意味着它将自行处理不同的 DPI 设置。 但是,“关于”表单似乎不支持不同的 DPI,因为您已将其 AutoScaleModel 属性设置为 Font。
在 WindowsFormsApplication1 中使用 About 表单时,它可以“正常”工作,因为默认情况下该应用程序被声明为非 DPI 感知的。 在这种情况下,操作系统会将表单呈现为沙箱中的位图,并在将其显示在屏幕上之前将其放大,因此您可以看到文本是模糊的。
为了避免 VS 设计器中的问题,您必须确保“关于”表单可以处理不同的 DPI 设置。 实际上,您的解决方法是支持不同 DPI 设置的解决方案之一。
更新: 这篇文章详细描述了 WinForms 应用程序中的 DPI 感知。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.