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」。這甚至可以避免需要雙重緩衝。 –