Pat*_*t O 7 c# gdi+ doublebuffered winforms
我正在开发一个C#游戏(2.0或3.5还没有决定).游戏将在具有六边形网格的地图上播放.我很欣赏这个地图的UI应该使用双缓冲(很多层,所以慢绘图).我知道我可以通过样式启用双缓冲,或者创建我自己的缓冲区并自己处理它.我在网上找到的大多数建议都是自己处理.我想知道为什么?显然,这允许我避免控制双缓冲中固有的假设,但我不知道这些假设是什么.
同样,我不是在寻找代码来解释如何加倍缓冲我的控件,而是为什么我自己构建它而不是使用双缓冲样式并允许CLR/Control类来处理它?
在 WFA 中,双缓冲会降低性能,但无法完全消除自定义图形区域中的闪烁。对于内置 GUI 元素,例如您创建一个由 ImageButtons 和 Label 构建的游戏,内置双缓冲模式非常适合隐藏控制树的重绘。但是,将其用于自定义绘图区域存在几个主要问题:
通过保持基本窗口 GUI 单缓冲,但创建一个可以控制缓冲的区域,这两个问题都可以最小化。
双缓冲方法可以很简单,只需创建一个 Bitmap 对象作为后台缓冲区,并在准备就绪时将其绘制到绘图区域,或者设置一个单独的 BufferedGraphicsContext 来管理自定义绘图区域的缓冲。