自定义控件(C#)中的双缓冲区子控件

本文关键字:双缓冲区 控件 自定义控件 | 更新日期: 2023-09-27 17:47:25

我想对包含按钮的自定义控件进行双重缓冲。我尝试了各种方法来双重缓冲控制;设置样式、BufferedGraphicsContext和绘制到位图。这些都适用于控件的自定义绘图,但都无法将按钮绘制到后缓冲区。我该如何做到这一点?

自定义控件(C#)中的双缓冲区子控件

从技术上讲,你不能,如果它们是标准的,你真的不需要。NET WinForms按钮。

按钮本身通过受保护的DoubleBuffered属性进行控制。访问它的唯一方法是从S.W.F.Button派生一个新类,并实现代码以在该类的实例上启用DoubleBuffered属性(我可能会在构造函数中这样做)。最后,在表单上使用新类的对象,而不是S.W.F.Buttons.

然而,我记得,按钮纯粹是从WinAPI中提取的;它们不是GDI+。因此,您不应该需要对其图形进行双重缓冲。也就是说,我不知道你的使用场景,也不知道你应用程序显示了什么症状,所以我可能错了。:)

你可以考虑看看Pro这本书。NET 2.0 Windows窗体和C#中的自定义控件。所有这些都是根据那本书中的资料总结出来的。