Как мне изменить цвет пера в C#?
Я пытаюсь изменить цвет моей ручки и сплошной кисти.
Я жестко запрограммировал их, но теперь я хотел бы знать, как сделать только одну ручку и изменить цвет на любой нужный мне, используя графический интерфейс (выпадающий список, цветовая палитра и т. Д.).
Вот мой код:
private void imageComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
// create graphics object, Pen and SolidBrush
Graphics myGraphics = base.CreateGraphics();
// create Pen using different colors
Pen myPen = new Pen(Color.DarkRed);
Pen myPen2 = new Pen(Color.Blue);
Pen myPen3 = new Pen(Color.Purple);
Pen myPen4 = new Pen(Color.DarkGreen);
// create SolidBrush using color DarkRed
SolidBrush mySolidBrush = new SolidBrush(Color.DarkRed);
SolidBrush mySolidBrush2 = new SolidBrush(Color.Orange);
SolidBrush mySolidBrush3 = new SolidBrush(Color.Blue);
SolidBrush mySolidBrush4 = new SolidBrush(Color.Green);
// clear drawing area setting it to color white
myGraphics.Clear(Color.White);
// find index, draw proper shape
switch (imageComboBox.SelectedIndex)
{
case 0: // case Circle is selected
myGraphics.DrawEllipse(myPen, 50, 50, 150, 150);
break;
case 1: // case Rectangle is selected
myGraphics.DrawRectangle(myPen2, 50, 50, 150, 150);
break;
case 2: // case Ellipse is selected
myGraphics.DrawEllipse(myPen3, 50, 85, 150, 115);
break;
case 3: // case Pie is selected
myGraphics.DrawPie(myPen4, 50, 50, 150, 150, 0, 45);
break;
case 4: // case Filled Circle is selected
myGraphics.FillEllipse(mySolidBrush, 50, 50, 150, 150);
break;
case 5: // case Filled Rectangle is selected
myGraphics.FillRectangle(mySolidBrush2, 50, 50, 150,
150);
break;
case 6: // case Filled Ellipse is selected
myGraphics.FillEllipse(mySolidBrush3, 50, 85, 150, 115);
break;
case 7: // case Filled Pie is selected
myGraphics.FillPie(mySolidBrush4, 50, 50, 150, 150, 0,
45);
break;}
myGraphics.Dispose(); // release the Graphics object
}
2 ответа
Вы можете легко изменить цвет пера с помощью
Pen pen = new(Color.Black); //Black for a default starting color
ColorDialog colorDialog = new();
if (colorDialog.ShowDialog() == DialogResult.OK){
pen.Color = colorDialog.Color;
}
Затем вы использовали бы эту ручку там, где она вам понадобится.
Это также может работать с раскрывающимся списком, где вы вручную определяете цвета в раскрывающемся списке, а переключатель можно использовать для изменения индекса раскрывающегося списка и обновления цвета пера внутри каждого случая.
Еще один способ проявить творческий подход — позволить пользователю вводить значения R, B, G в 3 разных текстовых поля. Вы можете поместить прямоугольник рядом с этими текстовыми полями для предварительного просмотра цвета. Когда одно из значений текстового поля изменяется, задний цвет прямоугольника предварительного просмотра, а также цвет пера могут измениться на значение R, G, B, заданное пользователем, и по умолчанию на черный, если значение недопустимо.
Вы можете изменить цвет Pen
с использованием Color
собственность Pen
как это:
Pen p = new Pen();
p.Color = Color.Red;
Тогда вы можете использовать p.Color = ...
в каждом случае и использовать одну и ту же ручку.