How do I change the color of the pen in c#?

7.4k Views Asked by At

I am trying to change the color of my pen and solid brush.

I hard coded them, but now I would like to know how to make only one pen and change the color to any color I want using a GUI (Drop down list, color palette, etc).

Here is my coded:

    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

There are 2 best solutions below

0
On

You can easily change the color of a pen using a ColorDialog and the result that the user selects. Here is an example of what this might look like:

Pen pen = new(Color.Black); //Black for a default starting color

ColorDialog colorDialog = new();
if (colorDialog.ShowDialog() == DialogResult.OK){
    pen.Color = colorDialog.Color;
}

You would then use that pen where you would need it.

This could also work with a dropdown where you manually define the colors in the drop down and a switch can be used on the dropdown index change and update the pen color inside each case.

Another way you could be creative is by letting the user type in the R, B, G values in 3 different text boxes. You could put a rectangle next to these textboxes for a color preview. When one of the textbox values changes, the preview rectangle's back color, as well as the pen's color, could change to the R, G, B value given by the user and default to black if the value is not valid.

2
On

You can change the color of a Pen using the Color property of the Pen like this:

Pen p = new Pen();
p.Color = Color.Red;

Then you can use p.Color = ... in each case and use the same pen.