В частности, я хотел бы иметь возможность получать маленькие (16 х 16) значки во время выполнения.
Я пробовал это:
new Icon(SystemIcons.Error, SystemInformation.SmallIconSize)
Который якобы «пытается найти версию иконки, которая соответствует запрашиваемому размеру», но все равно дает мне значок 32 x 32. Я также попробовал:
Size iconSize = SystemInformation.SmallIconSize;
Bitmap bitmap = new Bitmap(iconSize.Width, iconSize.Height);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.DrawIcon(SystemIcons.Error, new Rectangle(Point.Empty, iconSize));
}
Но это просто уменьшит размер 32 x 32 до уродливых 16 x 16.
Я рассмотрел возможность извлечения значков из библиотеки изображений VS, но я действительно хочу, чтобы они динамически изменялись в зависимости от ОС (значки XP в XP, значки Vista в Vista и т. Д.). Я готов P / Invoke, если это то, что нужно.