我有一个是被称为每500毫秒功能,应该删除包含在PictureBox的旧图纸,并通过一个新的分配绘制到图片框
public override void onUpdate()
{
pictureBox.Image = null;
Graphics g = pictureBox.CreateGraphics();
Pen p = new Pen(System.Drawing.Color.Blue, 3);
Random rnd = new Random();
int randomInt = rnd.Next(0, 11);
g.DrawEllipse(p, new Rectangle(new Point(0,randomInt), pictureBox.Size));
p.Dispose();
g.Dispose();
return;
}
取代它不工作(没有出现在屏幕),在调试时除外.. 而当我这样做:
public override void onUpdate()
{
Graphics g = pictureBox.CreateGraphics();
Pen p = new Pen(System.Drawing.Color.Blue, 3);
Random rnd = new Random();
int randomInt = rnd.Next(0, 11);
g.DrawEllipse(p, new Rectangle(new Point(0,randomInt), pictureBox.Size));
p.Dispose();
g.Dispose();
System.Threading.Thread.Sleep(5000);
pictureBox.Image = null;
return;
}
圈正在绘制每5秒后,它消失了500ms的
第二个是我的逻辑,但我不明白为什么第一个不按我想要的方式工作..如果我删除“pictureBox.Image = null;”行,旧的圆圈不会被删除。
我该怎么做,每次onUpdate()被调用时重绘圆,让它保持直到下一次被调用?
您应该使用Paint事件中的Graphic对象,而不是CreateGraphics。你也应该使用一个计时器,而不是一个循环(我猜你就是这样调用onUpdate的)。在tick事件中,调用'pictureBox.Invalidate();'并在绘制事件中绘制您的图片。无需设置图像属性。 – LarsTech 2014-10-31 13:15:23