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

时间:2008-10-05 11:13:48

标签: c# winforms drawing doublebuffered

我想双重缓冲包含按钮的自定义控件。我已经尝试了各种方法来双重缓冲控件; SetStyle,BufferedGraphicsContext和绘制到位图。这些都适用于控件的自定义绘图,但它们都不会处理将按钮绘制到后台缓冲区。我如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

从技术上讲,你不能,如果它们是标准的.NET WinForms按钮,你真的不应该这样做。

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

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

您可以考虑查看图书Pro .NET 2.0 Windows Forms and Custom Controls in C#。所有这些都是从该书中的信息中总结出来的。