
同样,我不是在寻找代码来解释如何对我的控件进行双缓冲,而是为什么我自己构建它而不是使用双缓冲样式并允许CLR / Control类来处理它?
解决方法 在WFA中,双缓冲会降低性能,而不会完全消除自定义图形区域中的闪烁.对于内置的GUI元素,就像创建一个由 Imagebuttons和Labels构建的游戏一样,内置的双缓冲模式非常适合隐藏重绘控件树.但是,将它用于自定义绘图区域有几个主要问题:>当您设置应用程序以绘制双缓冲时创建的绘制缓冲区用于绘制整个窗口和所有子控件,而不仅仅是您的自定义绘图区域,因此您添加了重绘背面缓冲区上每个GUI元素的开销页面翻转之前.
>如果控件无效,则调用Paint方法.当发生这种情况时,您可能无法完成绘图,因此您将向用户显示未完整的图像(实时图形效果不佳).
通过保持基本窗口GUI单缓冲,但创建一个控制缓冲的区域,这两个问题都被最小化.
双缓冲方法可以像创建一个Bitmap对象作为后缓冲区一样简单,并在你准备就绪时将其绘制到绘图区域,或者设置一个单独的BufferedGraphicsContext来管理自定义绘图区域的缓冲.
总结以上是内存溢出为你收集整理的c# – 我为什么要做手动双缓冲?全部内容,希望文章能够帮你解决c# – 我为什么要做手动双缓冲?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)