WinForms искаженный шрифт - PullRequest
0 голосов
/ 07 мая 2018

У меня есть приложение WinForms, которое я создаю на своем ПК с Win10, и оно предназначено для запуска на другом компьютере с Win10. Проблема в том, что шрифты искажаются на другой машине. Первое изображение с моего компьютера, а второе с другого компьютера. Основная проблема заключается в том, что трудно отличить номера 6 и 8. Снимки экрана относятся к компоненту DataGridView, но они одинаковы для практически всех меток в приложении. Я не изменил шрифт по умолчанию Microsoft Sans Serif; 8,25pt . Есть идеи, что может быть не так?

Original font Distorted font

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Попробуйте следующее:

  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();
     }
    
0 голосов
/ 07 мая 2018

Видимо эта проблема началась с Windows 8.

Найдено решение 1:

Добавьте манифест, перейдя в Проект> Добавить новый элемент> Файл манифеста приложения.

Для 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 ==> Шрифт

Выполните несколько тестов, изменив это значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...