0
在我的表单类我已经覆盖了OnPaint
方法不能双缓冲窗体上绘制
protected override void OnPaint(PaintEventArgs e)
{
using (Graphics g = e.Graphics)
{
g.DrawImage(player.Sprite, new Rectangle(player.X, player.Y, 20, 20));
}
base.OnPaint(e);
}
我有一个计时器,那确实对Tick
this.Invalidate()
和图像闪烁。我给自己定的形式构造this.DoubleBuffered = true
,现在我的状态甚至不显示任何东西,如果我调整它的大小,它的行为是这样的:
那是什么,我很想念双缓存的事情?
什么是定时器的时间间隔? –
@TimonPost 25ms,约为。 40帧每秒 –
虽然这不是你的问题,但使用(Graphics g = e.Graphics)是无意义的代码。 'e.Graphics'已经*了* Graphics'对象;直接使用它。至于你的实际问题,闪烁可能是被擦除的背景。考虑设置“ControlStyles.AllPaintingInWmPaint”和“ControlStyles.UserPaint”。这甚至可以避免需要双重缓冲。 –