继承我正在使用的代码:
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));
但该代码也失败了。我全局放置了实心画笔,因此可以从任何创建的方法访问它。我到处寻找,找不到任何颜色更新说明,我看到的只是'新刷',现在,我不确定如何继续。我感谢任何协助。
答案 0 :(得分:0)
您应该将画笔移动到paint事件中并删除全局变量。完成后应处理SolidBrush。最好在一个地方做到这一点,而不是所有的变化事件。
using (SolidBrush sb = new SolidBrush(Color.FromArgb(255, RedValue, GreenValue, BlueValue )))
{
g.FillRectangle(sb, 10, 150, 300, 200);
}