【发布时间】:2013-05-10 04:40:45
【问题描述】:
我对 c# 非常陌生,我有一个简单的问题: 我应该在黑色背景上绘制一个白色粒子(矩形)并将其从一个屏幕水平移动到另一个屏幕。 我做到了,但问题是它闪烁太多(即即使速度很高也不流畅,我可以很容易地看到每个动作和另一个动作之间的黑色背景)
t.Interval = 1000 / speed;
t.Tick += new EventHandler(t_Tick);
t.Start();
....
void t_Tick(object sender, EventArgs e)
{
//g.Clear(Color.Black);
g.DrawRectangle(new Pen(Brushes.Black, 20), r); //draw a black rectangle in the old position...20 is the thickness of the pen
r.X += move_x;
g.DrawRectangle(new Pen(Brushes.White, 20), r); //draw a white rectangle in the new position...20 is the thickness of the pen
if (r.X >= 1700) ///this means it reached the end of the screen
t.Stop();
}
我使用 g.Clear 清除图形,但这也不起作用,所以我在旧位置绘制了一个黑色矩形,然后将其移动到新位置。
任何想法如何消除这种闪烁,甚至以其他方式做到这一点?
【问题讨论】:
-
尝试将表单的
DoubleBuffered属性设置为true? -
在表单的设计视图中,进入属性窗口(View -> Properties Window),找到“DoubleBuffered”行,将值更改为
True -
谢谢。我试过了,但我没有工作..还是太眨眼了!