Работа с "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));