Как мне изменить цвет пера в 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 = ... в каждом случае и использовать одну и ту же ручку.

Другие вопросы по тегам