首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用户控件中,设置DoubleBuffered = false是有意义的吗?

在用户控件中,设置DoubleBuffered = false是有意义的吗?
EN

Stack Overflow用户
提问于 2015-07-08 05:47:50
回答 2查看 161关注 0票数 1

我已经创建了一个用户控件,在其中我使用单个Graphics.DrawImage()来绘制控件的整个内容。“绘画再简单不过了,”我想,“所以闪烁的东西绝对应该被忽略掉。”但是,在我将DoubleBuffered属性设置为true.之前,重新油漆上的闪烁仍然存在。

为什么设置DoubleBuffered = false 作为默认值,即使在大多数琐碎的绘画情况下也会导致闪烁?为什么不永久地在双缓冲时锁定画图机制?是否有一个DoubleBuffered = false有意义的用例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-08 06:33:17

默认情况下,所有标准.NET框架控件都是双缓冲的。

使用自定义画图逻辑创建自己的控件时,可以指定是否使用.NET框架(DoubleBuffered = trueSetStyle(ControlStyles.OptimizedDoubleBuffer, true))提供的双缓冲。

对于您自己的控件,如果希望使用自己的双缓冲逻辑(特别是用于动画或高级内存管理),则应该将其设置为false,这主要涉及类BufferedGraphicsContext

在这里更详细地描述了双缓冲图形的MSDN链接

票数 1
EN

Stack Overflow用户

发布于 2015-07-08 08:01:21

摘要

为了汇编我接受的答案(以及下面的讨论)的结果,

在以下情况下,将DoubleBuffered设置为false是有意义的:

  • 您实现了自己的双缓冲(涉及类BufferedGraphicsContext)
  • 不管控件是否闪烁

类似的答案:为什么默认情况下禁用DoubleBuffered? (用于表单,但也适用于控件)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31284455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档