Сделайте диалог выбора, в котором используется цветное колесо в C#
Пример
Это изменение довольно легко. Сначала переместите цветное колесо из предыдущего примера в тип формы с именем ColorWheelDialog. Добавьте кнопки «ОК» и «Отмена». Задайте свойства формы AcceptButton и CancelButton для этих кнопок и установите их свойства DialogResult в OK и Отменить соответственно.
Единственное реальное изменение кода диалогового окна заключается в свойстве SelectedColor. Когда вы устанавливаете свойство, диалоговое окно теперь обновляет свою полосу прокрутки альфа. Таким образом, когда основная программа устанавливает SelectedColor, панель прокрутки диалога обновляется.
(Эта версия не пытается установить полосу прокрутки насыщения. Вы можете преобразовать значение RGB в HLS и понять это, но я не уверен, что цветовое колесо является действительно правильным цветовым колесом HLS. день, когда я чувствую себя менее ленивым, я посмотрю на это более подробно. Между тем диалог дает хороший результат.)
Основная программа использует следующий код, позволяющий пользователю выбирать цвета переднего плана и фона.
// Выбранные цвета. private Color Color1 = Color.FromArgb(128, 255, 0, 0); private Color Color2 = Color.FromArgb(128, 0, 0, 255); // Установить цвет 1. private void btnColor1_Click(object sender, EventArgs e) { ColorWheelDialog dlg = new ColorWheelDialog(); dlg.SelectedColor = Color1; if (dlg.ShowDialog() == DialogResult.OK) Color1 = dlg.SelectedColor; picSample.Refresh(); } // Установить цвет 2. private void btnColor2_Click(object sender, EventArgs e) { ColorWheelDialog dlg = new ColorWheelDialog(); dlg.SelectedColor = Color2; if (dlg.ShowDialog() == DialogResult.OK) Color2 = dlg.SelectedColor; picSample.Refresh(); }
Код для каждой кнопки создает экземпляр класса ColorWheelDialog и устанавливает его свойство SelectedColor в соответствующее значение. (Программа сохраняет выбранные значения в picSample PictureBox.)
Затем код отображает диалог. Если пользователь выбирает цвет и нажимает OK, программа сохраняет выбранный цвет и обновляет picSample PictureBox.
Следующий код показывает, как элемент picSample рисует свой образец.
// Нарисуем образец, чтобы показать альфа-компонент. private void picSample_Paint(object sender, PaintEventArgs e) { e.Graphics.Clear(Color.White); // Нарисуем несколько строк. int wid = picSample.ClientSize.Width; int hgt = picSample.ClientSize.Height; e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; using (Pen pen = new Pen(Color.Black, 3)) { for (int x = 10; x <= wid; x += 20) e.Graphics.DrawLine(pen, x, 0, x, hgt); for (int y = 10; y <= hgt; y += 20) e.Graphics.DrawLine(pen, 0, y, wid, y); } // Нарисуем эллипс. int third = picSample.ClientSize.Width / 3; using (Brush brush = new SolidBrush(Color2)) { e.Graphics.FillEllipse(brush, 0, 0, 2 * third, hgt); } using (Brush brush = new SolidBrush(Color1)) { e.Graphics.FillEllipse(brush, third, 0, 2 * third, hgt); } }