我已经创建了一个用户控件,在其中我使用单个Graphics.DrawImage()来绘制控件的整个内容。“绘画再简单不过了,”我想,“所以闪烁的东西绝对应该被忽略掉。”但是,在我将DoubleBuffered属性设置为true.之前,重新油漆上的闪烁仍然存在。
为什么设置DoubleBuffered = false 作为默认值,即使在大多数琐碎的绘画情况下也会导致闪烁?为什么不永久地在双缓冲时锁定画图机制?是否有一个DoubleBuffered = false有意义的用例?
发布于 2015-07-08 06:33:17
默认情况下,所有标准.NET框架控件都是双缓冲的。
使用自定义画图逻辑创建自己的控件时,可以指定是否使用.NET框架(DoubleBuffered = true或SetStyle(ControlStyles.OptimizedDoubleBuffer, true))提供的双缓冲。
对于您自己的控件,如果希望使用自己的双缓冲逻辑(特别是用于动画或高级内存管理),则应该将其设置为false,这主要涉及类BufferedGraphicsContext。
在这里更详细地描述了双缓冲图形的MSDN链接
发布于 2015-07-08 08:01:21
摘要
为了汇编我接受的答案(以及下面的讨论)的结果,
在以下情况下,将DoubleBuffered设置为false是有意义的:
BufferedGraphicsContext)类似的答案:为什么默认情况下禁用DoubleBuffered? (用于表单,但也适用于控件)。
https://stackoverflow.com/questions/31284455
复制相似问题