Сайт для программистов

понедельник, 3 ноября 2008 г.

Системные значки Windows

Если вам понадобится в приложении использовать системные значки Windows, которые мы обычно применяем в MessageBox, то воспользуйтесь классом SystemIcons. Например, пользователям Windows Vista хорошо знаком значок с изображением щита, тесно связанного с функциями UAC. Чтобы вывести этот значок, используйте такой код:

using (Graphics g = CreateGraphics())
{
g.DrawIcon(SystemIcons.Shield, 20, 30);
}

Если вам необходимо вывести все системные значки Windows, то лучше воспользоваться отражением. Пример с щитом показывает, что набор системных значков постоянно пополняется, и Reflection поможет написать универсальный код для этой задачи:

using System.Reflection;

// Получаем PropertyInfo для всех статических
// свойств SystemIcons
PropertyInfo[] props = typeof(SystemIcons).GetProperties(BindingFlags.Public BindingFlags.Static);
Graphics g = CreateGraphics();

int y = 0;
// Отображаем каждый значок. Все статические члены
// получаем через отражение — класс!
//
foreach (PropertyInfo p in props)
{
Object obj = p.GetValue(null, null);
if (obj.GetType() == typeof(Icon))
{
Icon icon = (Icon)obj;
g.DrawIcon(icon, 0, y);
g.DrawString(String.Format("SystemIcons.{0}",
p.Name), new Font("Arial", 12), Brushes.Blue, icon.Width + 2, y);
y += icon.Height;
}
}
g.Dispose();

Счастливого вам программирования!

Комментариев нет: