// Указание ARGB вручную.
Color myColor = Color.FromArgb(0, 255, 128, 64);
Используя метод FromName(), вы можете также сгенерировать тип Color по данному строковому значению. Строковый параметр должен при этом соответствовать одному из членов перечня KnownColor (который содержит значения для различных цветовых элементов Windows, например, таких как KnownColor.WindowFrame и KnownColor.WindowText).
// Получение Color по известному имени.
Color myColor = Color.FromName("Red") ;
Независимо от метода получения типа Color, с этим типом можно взаимодействовать с помощью его членов.
• GetBrightness() – возвращает значение яркости типа Color на основании измерения HSB (Hue-Saturation-Brightness – оттенок, насыщенность, яркость).
• GetSaturation() – возвращает значение насыщенности типа Color на основании измерения HSB.
• GetHue() – возвращает значение оттенка типа Color на основании измерения HSB.
• IsSystemColor – индикатор того, что данный тип Color является зарегистрированным системным цветом.
• A, R, G, В – возвращают значения, присвоенные для альфа, красной, зеленой и синей составляющих типа Color.
Чтобы обеспечить конечному пользователю приложения возможность конфигурировать тип Color, пространство имен System.Windows.Forms предлагает встроенный класс диалогового окна с именем ColorDialog (рис. 20.7).
Рис. 20.7. Диалоговое окно настройки цветов Windows Forms
Работать с этим диалоговым окном очень просто. Для действительного экземпляра типа ColorDialog вызовите ShowDialog(), чтобы отобразить диалоговое окно модально. После закрытия диалогового окна пользователем вы сможете извлечь соответствующей объект Color, используя свойство ColorDialog.Color.
Предположим, что вы хотите с помощью ColorDialog предоставить пользователю возможность выбрать цвет фона для области клиента формы. Чтобы упростить ситуацию, мы будем отображать ColorDialog тогда, когда пользователь щелкнет в любом месте области клиента.
public partial class MainForm: Form {
private = ColorDialog colorDlg;
private Color currColor = Color.DimGray;
public mainForm() {
InitializeComponent();
colorDlg = new ColorDialog();
Text = "Для изменения цвета щелкните здесь";
this.MouseDown += new MouseEventHandler(MainForm_MouseDown);
}
private void MainForm_MouseDown(object sender, MouseEventArgs e) {
if (colorDlg.ShowDialog() ! = DialogResult.Cancel) {
currColor = colorDlg.Color;
this.BackColor = currColor;
string strARGB = ColorDlg.Color.ToString();
MessageBox.Show(strARGB, "Выбранный цвет ");
}
}
}
Исходный код.Проект ColorDIg размещен в подкаталоге, соответствующем главе 20.
Теперь давайте выясним, как можно программно манипулировать шрифтами. Тип System.Drawing.Font представляет шрифт, установленный на машине пользователя, Типы шрифта могут определяться с помощью любого числа перегруженных конструкторов. Вот вам несколько примеров.
// Создание Font с заданными именем типа и размером.
Font f = new Font("Times New Roman", 12);
// Создание Font, с заданными именем типа, размером и начертанием.
Font f2 = new Font("WingDings", 50, FontStyle.Bold | FontStyle.Underline);
При создании f2 здесь используются связанные с помощью операции OR значения из перечня FontStyle.
public enum FontStyle {
Regular, Bold,
Italic, Underline, Strikeout
}
После установки параметров объекта Font следующей вашей задачей должна быть передача этого объекта методу Graphics.DrawString() в виде параметра. Хотя метод DrawString() перегружен, каждая из его вариаций требует одну и ту же информацию: отображаемый текст, шрифт для отображения этого текста, кисть, с помощью которой выполняется визуализация, и место, в которое нужно текст поместить.
private void MainForm_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
// Аргументы (String, Font, Brush, Point).
g.DrawString("Моя строка", new Font("WingDings", 25), Brushes.Black, new Point(0,0));
// Аргументы (String, Font, Brush, int, int)
g.DrawString("Другая строка", new Font("Times New Roman", 16), Brushes.Red, 40, 40);
}
Работа с семействами шрифтов
Пространство имен System.Drawing определяет также тип FontFamily, предлагающий абстракцию для группы гарнитур, имеющих одинаковый базовый дизайн, но с определенными вариациями стиля. Семейство шрифтов, например, такое как Verdana, может включить в себя несколько шрифтов, отличающихся по стилю и размеру. Например, Verdana Bold (полужирный) 12 пунктов и Verdana Italic (курсив) 24 пункта являются разными шрифтами в рамках одного семейства шрифтов Verdana.
Читать дальше