Размер иконки не увеличивается в более высоком DPI - PullRequest
0 голосов
/ 12 сентября 2018

Я сталкиваюсь с этой проблемой, когда DPI больше 100. Я изменил размер значков, таких как полужирный, курсив, и когда я запускаю программу с разрешением 100 dpi, размеры значков больше, но когда я запускаю программу после при значении dpi, превышающем 100, значки уменьшаются и не обновляются до значений любого размера. Я пробовал autosize = false, масштабирование изображения - нет.

1 Ответ

0 голосов
/ 07 апреля 2019

Работа с "System.Drawing.Icon" значков, которые вы должны иметь в виду, чтобы использовать значок большего размера, если вы используете DPI больше 100. Свойство autosize делает тут не поможет.

Файл значка может содержать различные размеры, поэтому мы можем определить фактический масштабный коэффициент DPI и учесть этот коэффициент для загрузки значка из файловой системы с правильным размером.

Код для определения фактора DPI может выглядеть следующим образом:

    using System;
    using System.Drawing;
    using System.Runtime.InteropServices;

    public static class DpiHelper
    {
        private static readonly double m_dpiKoef = Graphics.FromHdc(GetDC(IntPtr.Zero)).DpiX / 96f;

        public static double GetDpiFactor()
        {
            return m_dpiKoef;
        }

        [DllImport("User32.dll")]
        private static extern IntPtr GetDC(IntPtr hWnd);
    }

Теперь с помощью Значок (строка fileName, int width, int height) из System.Drawing. При инициализации нового экземпляра иконки может выглядеть так:

int size = 48;
int dpiSize = (int)(size * DpiHelper.GetDpiFactor());
Icon dpiIcon = new Icon(filename, new Size(dpiSize, dpiSize));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...