c# – 我为什么要做手动双缓冲?
发布时间:2020-12-15 08:02:52 所属栏目:百科 来源:网络整理
导读:我正在开发一个C#游戏(2.0或3.5还没有决定).游戏将在具有六边形网格的地图上播放.我很欣赏这张地图的UI应该使用双缓冲(很多层,所以慢绘).我知道我可以通过样式启用双缓冲,或者创建我自己的缓冲区并自己处理它.我在网上找到的大多数建议都是自己处理.我想知道
我正在开发一个C#游戏(2.0或3.5还没有决定).游戏将在具有六边形网格的地图上播放.我很欣赏这张地图的UI应该使用双缓冲(很多层,所以慢绘).我知道我可以通过样式启用双缓冲,或者创建我自己的缓冲区并自己处理它.我在网上找到的大多数建议都是自己处理.我想知道为什么?显然,这允许我避免控制双缓冲中固有的假设,但我不知道这些假设是什么.
同样,我不是在寻找代码来解释如何对我的控件进行双缓冲,而是为什么我自己构建它而不是使用双缓冲样式并允许CLR / Control类来处理它? 解决方法
在WFA中,双缓冲会降低性能,而不会完全消除自定义图形区域中的闪烁.对于内置的GUI元素,就像创建一个由
ImageButtons和Labels构建的游戏一样,内置的双缓冲模式非常适合隐藏重绘控件树.但是,将它用于自定义绘图区域有几个主要问题:
>当您设置应用程序以绘制双缓冲时创建的绘制缓冲区用于绘制整个窗口和所有子控件,而不仅仅是您的自定义绘图区域,因此您添加了重绘背面缓冲区上每个GUI元素的开销页面翻转之前. 通过保持基本窗口GUI单缓冲,但创建一个控制缓冲的区域,这两个问题都被最小化. 双缓冲方法可以像创建一个Bitmap对象作为后缓冲区一样简单,并在你准备就绪时将其绘制到绘图区域,或者设置一个单独的BufferedGraphicsContext来管理自定义绘图区域的缓冲. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |