Использование предопределенных цветов системы в C#
Статический класс System.Drawing.SystemColors определяет свойства, которые дают системные цвета. К ним относятся цвета для таких объектов, как активные объекты, выделенный текст, титры и оконные рамы.
В этом примере используется следующий код для отображения определенных цветов системы.
// Список системных цветов.
private void Form1_Paint(object sender, PaintEventArgs e)
{
int y = 10;
// Перечислим свойства статического цвета класса SystemColors.
Type type = typeof(SystemColors);
foreach (PropertyInfo field_info in type.GetProperties())
{
DrawColorSample(e.Graphics, ref y,
(Color)field_info.GetValue(null, null),
field_info.Name);
}
// Размер по размеру.
this.ClientSize = new Size(this.ClientSize.Width, y + 10);
}
Этот код получает объект Type, представляющий класс SystemColors. Он вызывает метод GetProperties объекта и циклически просматривает возвращаемую информацию о свойствах. Для каждого свойства он вызывает следующий DrawColorSample метод, передавая ему цвет и имя свойства.
// Отображение образца цвета.
private void DrawColorSample(Graphics gr, ref int y,
Color clr, string clr_name)
{
using (SolidBrush br = new SolidBrush(clr))
{
gr.FillRectangle(br, 10, y, 90, 10);
}
gr.DrawRectangle(Pens.Black, 10, y, 90, 10);
gr.DrawString(clr_name, this.Font, Brushes.Black, 110, y);
y += 15;
}
Этот метод рисует прямоугольник, заполненный цветом, за которым следует имя цвета. Он завершился путем увеличения переменной y, поэтому следующий цвет рисуется ниже этого.
В этом примере используется отражение, чтобы он мог отображать все цвета системы, но в реальной программе вы, вероятно, просто использовали бы системный цвет, как если бы это было любое другое значение цвета. Например, следующий код устанавливает фон формы в цвет HotTrack.
this.BackColor = SystemColors.HotTrack;
