C# Graphics.Fillrectangle赢得';t更新
我有一个事件功能,点击启动,在其中我有一个图形指令C# Graphics.Fillrectangle赢得';t更新,c#,graphics,C#,Graphics,我有一个事件功能,点击启动,在其中我有一个图形指令 private void pictureBox1_Click(object sender, EventArgs e) { switch (modCLick) { case 2: session.g.FillRectangle(Brushes.Tomato, MousePosition.X, MousePosition.Y, 50,
private void pictureBox1_Click(object sender, EventArgs e)
{
switch (modCLick)
{
case 2:
session.g.FillRectangle(Brushes.Tomato, MousePosition.X, MousePosition.Y, 50, 100);
break;
}
ModCLick = 1;
}
当我启动程序时,单击不起任何作用,但如果我按下一个键(仅某些键),则会应用更改(我可以看到矩形)。为什么没有正确更新?
PS:不要担心case指令。将图形实例存储在全局变量中是一个非常糟糕的主意。让它看起来像这样:
using (var g = Graphics.FromImage(pictureBox1.Image)) {
g.FillRectangle(Brushes.Tomato, MousePosition.X, MousePosition.Y, 50, 100);
pictureBox1.Invalidate();
}
Invalidate()调用就是您要查找的调用。PictureBox只能告诉您更改了图像属性,但不能告诉您更改了图像内容。虽然有人告诉我不要担心,但您知道您的开关变量和上次赋值是不同的对象吗?不知道这是否重要。几乎,但我不认为这是问题所在。工作起来很有魅力!非常感谢你!