В частности, я хотел бы получить маленькие значки (16 x 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, если это нужно.