- •1. Цель работы
- •2. Краткая теория
- •2.1. Работа с перьями
- •2.2. Работа с кистью
- •2.2.1. Кисть для сплошной закраски
- •2.2.2. Кисти типа HatchBrush
- •2.2.3. Кисти типа TextureBrush
- •2.2.4. Градиентные кисти
- •2.3. Проверка попадания в область изображения
- •2.4. Проверка попадания в область, отличную от прямоугольной
- •2.5. Определение цветовых значений
- •2.6. Стандартное диалоговое окно выбора цвета
- •3. Пример выполнения работы
- •3.1. Визуальное проектирование диалогового окна
- •3.2. Проектирование программного кода
- •3.2.1. Начальное рисование фигуры
- •3.2.2. Реализация движения фигуры
- •3.2.3. Программная реализация «отскакивания от стенок»
- •3.2.4. Изменение скорости движения круга
- •3.2.5. Создание диалоговой панели выбора цвета заливки
- •3.2.6. Создание свойства для получения цвета
- •3.2.7. Проверка попадания курсора мыши внутрь круга
- •If (прямоугольник.Contains(точка_курсора))
- •3.2.8. Изменение цвета круга
- •4. Варианты заданий для самостоятельной работы
2.5. Определение цветовых значений
Многие методы графического вывода, определенные классом Graphics, требуют указания цвета, который должен использоваться в процессе рисования. Структура System.Drawing.Color представляет цветовую константу ARGB (от Alpha-Red-Green-Blue – альфа (прозрачность), красный, зеленый, синий). Функциональные возможности типа Color (цвет) представляются рядом статических доступных только для чтения свойств, возвращающих конкретный тип Color.
//Один из множества встроенных цветов
Color c = Color.PapayaWhip;
Если стандартные цветные значения не подойдут, можно создать новый тип Color и указать для него значения A, R, G и B, используя метод FromArgb().
//Указание ARGB вручную.
Color myColor = Color.FromArgb (0, 255, 128, 64);
Используя метод FromName(), можно также сгенерировать тип Color по данному строковому значению. Строковый параметр должен при этом соответствовать одному из элементов перечисления KnownColor (который содержит значения для различных цветовых элементов Windows, например, таких как KnownColor.WindowFrame и KnownColor.WindowText).
//Получение Color по известному имени.
Color myColor = Color.FromName (“Red”);
Независимо от метода получения типа Color, с этим типом можно взаимодействовать с помощью его компонентов.
GetBrighness() – возвращает значение яркости типа Color на основании измерения HSB (Hue-Saturation-Brightness – оттенок, насыщенность, яркость).
GetSaturation() – возвращает значение насыщенности типа Color на основании измерения HSB.
GetHue() – возвращает значение оттенка типа Color на основании измерения HSB.
IsSystemColor – индикатор того, что данный тип Color является зарегистрированным системным цветом.
A, R, G, B – возвращают значения, присвоенные для прозрачности, красной, зеленой и синей составляющей типа Color.
2.6. Стандартное диалоговое окно выбора цвета
Чтобы обеспечить пользователю приложения возможность выбирать цвет изображения, пространство имен System.Windows.Forms предлагает встроенный класс диалогового окна с именем ColorDialog (рис. 2.6).
Рис. 2.6 – Стандартное диалоговое окно выбора цвета
Работать с этим диалоговым окном очень просто. Для созданного объекта класса ColorDialog нужно вызвать метод ShowDialog(), чтобы отобразить окно модально. После закрытия диалогового окна пользователем можно получить выбранный цвет, используя свойство 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, “Выбранный цвет:”);
}
}
}
