0

我正在尝试更改钢笔和实心画笔的颜色。

我对它们进行了硬编码,但现在我想知道如何只制作一支笔并使用 GUI(下拉列表、调色板等)将颜色更改为我想要的任何颜色。

这是我的编码:

    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
    }
4

2 回答 2

2

您可以使用 aColorDialog和用户选择的结果轻松更改笔的颜色。这是一个可能看起来像这样的示例:

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

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

然后,您将在需要的地方使用那支笔。

这也可以与下拉列表一起使用,您可以在下拉列表中手动定义颜色,并且可以在下拉索引更改时使用开关并更新每种情况下的笔颜色。

另一种可以发挥创意的方法是让用户在 3 个不同的文本框中输入 R、B、G 值。您可以在这些文本框旁边放置一个矩形以进行颜色预览。当其中一个文本框值更改时,预览矩形的背景颜色以及笔的颜色可能会更改为用户指定的 R、G、B 值,如果该值无效,则默认为黑色。

于 2021-12-08T14:49:54.150 回答
0

Pen您可以使用如下Color属性更改 a 的颜色Pen

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

然后您可以p.Color = ...在每种情况下使用并使用同一支笔。

于 2015-11-28T11:21:31.760 回答