2008-10-05 117 views
5

我想双缓冲包含按钮的自定义控件。我尝试过各种方法来加倍缓冲控制; SetStyle,BufferedGraphicsContext,并绘制到位图。这些对于控件的自定义绘图都可以正常工作,但它们都不会处理将按钮绘制到后台缓冲区。我如何实现这一目标?自定义控件(C#)中的双缓冲区子控件

+0

另请参阅:http://stackoverflow.com/questions/76993/how-to-double-buffer-net-controls-on-a-form。 – ESRogs 2009-10-01 00:26:03

回答

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#。所有这些都是从该书中的信息中总结出来的。