在C#Windows窗体中开发游戏时,会发现屏幕发生闪烁,那如何进行解决呢?这就用到了GDI+的双倍缓冲技术:
导致画面闪烁的原因:
随着游戏的进行,窗体内容在不断变化,每次都要调用paint事件来进行窗体重绘。因此,只要是有图元存在的地方,就会有图像的重绘,而由于窗体重绘存在时间间隔,导致闪烁的出现。特别是当图元内容特别多的时候,闪烁更加严重。
当鼠标对图元进行操作或者是进行追踪的时候,paint事件会经常被调动。使得窗口刷新的次数大大增加,虽然窗口刷新会使得图元一次性显示到窗体上,但也会有时间延迟,因为此时窗口刷新时间间隔要远远小于图元显示到窗口的整个时间。因此,闪烁问题并不能完全解决。
解决方法:
1、建立一块内存虚拟画布。
2、获取这块内存画布的Graphics的引用
3、在内存画布上画图
4、将内存画布画到屏幕上