在C#中,如何使用numericupdown控件动态更改solidbrush颜色?

时间:2018-03-13 21:35:41

标签: c# colors numericupdown

继承我正在使用的代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace Colors_Form
    {
        public partial class Form1 : Form
        {
            public int RedValue;
            public int GreenValue;
            public int BlueValue;
            public SolidBrush sb = new SolidBrush(Color.FromArgb(255, 0, 0, 0));
            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Paint(object sender, PaintEventArgs e)
            {
                Graphics g = e.Graphics;
                RedValue = (int)RedNumBox.Value;
                GreenValue = (int)GreenNumBox.Value;
                BlueValue = (int)BlueNumBox.Value;

                //SolidBrush sb = new SolidBrush(Color.FromArgb(255, RedValue, GreenValue, BlueValue ));
                g.FillRectangle(sb, 10, 150, 300, 200);
            }

            private void RedNumBox_ValueChanged(object sender, EventArgs e)
            {
                sb = new SolidBrush(Color.FromArgb(255, RedValue, GreenValue, BlueValue));


            }

            private void GreenNumBox_ValueChanged(object sender, EventArgs e)
            {
                GreenValue = (int)GreenNumBox.Value;
                sb = new SolidBrush(Color.FromArgb(255, RedValue, GreenValue, BlueValue));
            }

            private void BlueNumBox_ValueChanged(object sender, EventArgs e)
            {
                BlueValue = (int)GreenNumBox.Value;
                sb = new SolidBrush(Color.FromArgb(255, RedValue, GreenValue, BlueValue));
            }
        }
    }

我想要做的是在触发'valuechanged'事件时让实心画笔改变颜色。不幸的是,我没有成功。我尝试过各种变体:

    sb = sb.Color(Color.FromArgb(255,RedValue, GreenValue, BlueValue));

但该代码也失败了。我全局放置了实心画笔,因此可以从任何创建的方法访问它。我到处寻找,找不到任何颜色更新说明,我看到的只是'新刷',现在,我不确定如何继续。我感谢任何协助。

1 个答案:

答案 0 :(得分:0)

您应该将画笔移动到paint事件中并删除全局变量。完成后应处理SolidBrush。最好在一个地方做到这一点,而不是所有的变化事件。

using (SolidBrush sb = new SolidBrush(Color.FromArgb(255, RedValue, GreenValue, BlueValue )))
        {
            g.FillRectangle(sb, 10, 150, 300, 200);
        }