我想要做什么
创建并填充一个矩形,最初使用灰色,然后按下按钮随机化该矩形的填充颜色。
我似乎无法
在最初绘制后修改上述矩形的属性。
随机颜色生成器
public static readonly Random random = new Random();
public static readonly object syncLock = new object();
public static int RandomNumber( int min, int max )
{
lock(syncLock) {
return random.Next(min, max);
}
}
public Color randColourPicker() {
Color randColour = Color.FromArgb(RandomNumber(0, 255), RandomNumber(0, 255), RandomNumber(0, 255));
return randColour;
}
一些 randColourPicker()
电话
public void randomizeColours() {
this.BackColor = randColourPicker();
clrRandLabel.ForeColor = randColourPicker();
randomizeButton.BackColor = randColourPicker();
randomizeButton.ForeColor = randColourPicker();
loopCheckbox.ForeColor = randColourPicker();
}
矩形画
private void clrRandForm_Paint( object sender, PaintEventArgs e ) {
int x = 266;
int y = 105;
int width = 274;
int height = 172;
Rectangle clrRect = new Rectangle(x, y, width, height);
SolidBrush greyBrush = new SolidBrush(Color.FromArgb(75, 75, 75));
SolidBrush randBrush = new SolidBrush(randColourPicker());
Graphics clrGraphic = mainBox.CreateGraphics();
clrGraphic.FillEllipse(greyBrush, clrRect);
greyBrush.Dispose();
randBrush.Dispose();
clrGraphic.Dispose();
}
更多信息
我有一个按钮,它的单击事件必然会执行randomizeColours()
调用,这反过来会交换 UI 各种元素的颜色。我还有一个复选框,当检查时,它会randomizeColours()
用计时器在循环中播放。我想做类似的事情,但填充颜色为clrRect
,但我似乎无法弄清楚如何clrGraphic.FillRectangle(greyBrush, clrRect)
在 PaintEvent 函数之外访问,所以我可以将其修改为clrGraphic.FillRectangle(randBrush, clrRect)
. randBrush
是我使用随机颜色创建的画笔randColourPicker()
。
使用的程序
Microsoft Visual Studio Express 2012
PS
对不起,如果这个问题是重复的,我不知道要搜索什么......另外,对不起,如果我的代码对某些人来说是令人畏惧的,我对OOP方法或C-并不是那么好风格化的语言。:)