我写了一个程序,画了一个棋盘游戏的具体情况(我认为它在英语中被称为“ Ludo”)。现在我可以绘制所有字段和棋子等,但是如果棋子被移动,我必须重新绘制该棋子。问题是我这样做时屏幕闪烁了很短的时间。这可能是因为我先清除所有字段和棋子,然后重绘它们(我将对此进行改进,但是我认为问题仍然会以较小的形式出现),然后在清除之前的时间屏幕会闪烁一切,直到我重画了一切。有没有一种方法可以告诉C#即使我明确调用this.Controls.Clear()
之类的代码直到我告诉它也不要重绘?
我已经使用this.SuspendLayout()
进行了尝试,因为名称暗示它应该完全做到这一点,但这是行不通的。
最佳答案
在Winforms自定义图形中,闪烁始终是一个问题。
尝试以下操作:代替将典当的位置绘制在窗体上的某个位置,而将它们绘制到位图上。完成后,只需将窗体上的PictureBox图像更改为位图即可。表单将使用新图像重新绘制。您可以使用两个Bitmap对象(这些对象确实很大)并每次都对其进行清理,以避免该程序成为内存消耗。瞧,您现在有了“页面翻转”图形,可以独立于其他重画表格请求来绘制和显示图形。