【问题标题】:C# WINFORMS Controls Font not smooth at run timeC# WINFORMS 控件字体在运行时不平滑
【发布时间】:2020-06-21 06:42:36
【问题描述】:

自 Visual Studio 2010 以来,我已多次注意到此问题,但并非一直如此。现在我正在使用 Visual Studio 2019 最新版本。在设计时,我创建了标签和按钮之类的控件,它们显示了 Segoe UI 字体的非常流畅的文本。运行 Winform 应用程序后,标签和按钮上的文本变得令人毛骨悚然,而且不清晰和流畅。 我附上了图片供您参考,以查看差异。

我还检查了 Application.SetCompatibleTextRenderingDefault(false);并形成 AutoScaleMode 和 DoubleBuffered 但没有运气。这是 Visual Studio 中的长期错误还是系统的某些设置。

请为我提供解决此问题的完美方法。谢谢

【问题讨论】:

标签: c# winforms fonts


【解决方案1】:

不确定您是否希望只为您(在您的计算机上)或使用您的应用程序的每个人批准平滑度。

如果目标只是为您批准,则启用Cleartype 并确保使用现代字体。

如果没有,那么您可以为您的文字制作图片并使用PictureBox 而不是TextBoxLabel 或您正在使用的任何东西,然后将文字图片插入PictureBox

您也可以创建一个自定义类并使用它来代替您的项目,然后您可以覆盖OnPaint 事件并更改Graphics TextRenderingHint。查看此Link,了解如何使用Label 完成此操作。

【讨论】:

  • 感谢 Marcus,但我的表单上有太多控件,我不想覆盖 onpaint。告诉我如何在 Visual Studio 中启用 cleartype。
  • Cleartype 不仅仅是为 Visual Studios 激活的。它是 Microsoft 创建的一种工具,用于提高文本质量以使其更易于阅读。如果您使用的是低分辨率的旧屏幕,这可能会产生很大的不同。 Cleartype 只能在 Windows 计算机上激活。要在 Windows 上激活它,只需在搜索栏中搜索 Cleartype 并单击“调整 cleartype 文本”,这将启动如何激活它的指南,希望对您有所帮助!
  • 我有具有高性能显卡的 MSI 游戏笔记本电脑。 ClearType 也在我的 Windows 设置中启用,但问题仍然存在。我 100% 确定这是 Visual Studio 的问题。我的应用程序之前运行良好,但是当我今天更新它时,它的控件字体变得令人毛骨悚然。仅在设计模式下字体看起来不错,但在运行时却不行
  • 我明白了……很奇怪。你用的是什么字体?如果您使用的是旧字体,例如 Microsoft Sans Serif(我认为这是默认字体,至少对于旧版本的 Visual Studios),请尝试将其更改为较新的字体,例如 Tahoma 或 Segoe UI。
  • 我正在使用 Segoe UI。当您使用 VSTUDIO 2019 时,它太奇怪了。
【解决方案2】:

看到这个@Hans Passant: https://stackoverflow.com/a/13228495/2696230 它对我有用

[STAThread]
static void Main() {
    if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware();
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());             // Edit as needed
}

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();

【讨论】:

    猜你喜欢
    • 2011-08-10
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多