WinForms扭曲了字体

时间:2018-05-07 14:01:30

标签: c# winforms fonts

我有一个WinForms应用程序,我在Win10 PC上构建,该应用程序可以在另一台Win10机器上运行。问题是字体在另一台机器上变形了。第一张照片来自我的电脑,第二张照片来自另一台电脑。主要问题是难以区分数字6和8.屏幕截图来自DataGridView组件,但它基本上与应用程序中的每个标签相同。我没有更改默认 Microsoft Sans Serif的字体; 8,25pt 。知道什么可能是错的吗?

Original font Distorted font

2 个答案:

答案 0 :(得分:0)

显然,这个问题始于Windows 8。

找到解决方案1:

转到Project>添加清单添加新项>应用程序清单文件。

对于Visual Studio 2015及更高版本,您只需取消注释此代码:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
        <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    </windowsSettings>
</application>

在旧版本的Visual Studio中,您需要自己添加此代码,因为它不会自动添加到清单中。

解决方案2:

问题必然来自屏幕分辨率的差异。 在这种情况下,您必须更改窗口缩放模式。 默认情况下,winform窗口会根据字体大小调整其缩放比例。

属性: AutoScaleMode ==&gt;字体

通过修改此值来进行多项测试。

答案 1 :(得分:0)

尝试以下方法:

  1. 转到表单设计器,然后选择您的表单(通过单击其标题栏)
  2. 按F4打开“属性”窗口,然后找到“AutoScaleMode”属性
  3. 将其从字体(默认)更改为Dpi。

    static class Program
    {
        [STAThread]
        static void Main()
        {
           if (Environment.OSVersion.Version.Major >= 6)
               SetProcessDPIAware();
    
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
      }
    
       [System.Runtime.InteropServices.DllImport("user32.dll")]
       private static extern bool SetProcessDPIAware();
     }