Использование предопределенных цветов системы в 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;