【问题标题】:Font Size issue with a popup shown at design-time in a WinForms UserControlWinForms UserControl 在设计时显示的弹出窗口的字体大小问题
【发布时间】:2016-01-03 05:28:12
【问题描述】:

我有一个 WinForms 自定义控件,它具有显示弹出窗口的设计时功能。

如果我在 Windows 设置(控制面板\所有控制面板项\显示)中更改系统字体缩放比例,那么弹出窗口中的标签将被剪切。

this video 中,您可以看到标准字体大小和字体大小更改为 125% 的不同行为。

这是在设计时从智能标签打开时的关于表单的屏幕截图:

这是运行时打开时关于表单的屏幕截图:

我该如何解决这个问题?

(Source)

【问题讨论】:

  • 我还不能发布图片...我留下了一些链接来更好地解释问题...为什么-1?
  • 可能是因为没有图像或将完整的源代码放在 zip 文件中以供下载。您最好发布相关的代码部分。 (+1 因为这是一个很好的问题,虽然它需要一些编辑)
  • 好的,谢谢。不幸的是,我需要至少 10 个声望才能发布图片,抱歉。
  • 如何在设计时显示 about 表单?
  • 通过调用 ShowDialog() 方法。

标签: c# winforms fonts font-size


【解决方案1】:

我找到了一种解决方法,方法是在显示之前将比例因子设置为表单。

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();
}

它似乎工作正常。

【讨论】:

    【解决方案2】:

    Visual Studio (VS) 设计器中的问题是 Visual Studio 被声明为 DPI 感知,这意味着它将自行处理不同的 DPI 设置。但是,About 表单似乎不支持不同的 DPI,因为您已将其 AutoScaleModel 属性设置为 Font。

    当在 WindowsFormsApplication1 中使用 About 表单时,它可以“正常”工作,因为该应用程序默认声明为不支持 DPI。在这种情况下,操作系统会将表单渲染为沙箱中的位图并在屏幕上显示之前将其放大,因此您可以看到文本是模糊的。

    为了避免 VS 设计器中的问题,您必须确保您的 About 表单可以处理不同的 DPI 设置。实际上,您的解决方法是支持不同 DPI 设置的解决方案之一。

    更新: This post 有详细描述 WinForms 应用程序中的 DPI 感知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 2017-09-12
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多