当前位置: 首页 > 编程语言 > C#

如何在C#中对Panel进行双缓冲?Share

时间:2023-04-11 02:34:35 C#

如何在C#中对面板进行双重缓冲?我在面板上有一个轮盘赌轮盘,我需要对面板进行双重缓冲以使其停止闪烁。谁能帮我?~T-Fox编辑:是的,我试过了。panel1.doublebuffered不存在,只有this.doublebuffered。我不需要缓冲表,只需要面板。您需要从Panel或PictureBox派生。这取决于您选择如何启用缓冲。如果你设置了this.DoubleBuffer标志那么你应该没问题。如果手动更新样式,则必须自己在WM_PAINT中绘制表单。如果您真的雄心勃勃,您可以维护自己的后台缓冲区并将其绘制为位图。使用System.Windows.Forms;publicclassMyDisplay:Panel{publicMyDisplay(){this.DoubleBuffered=true;//或SetStyle(ControlStyles.AllPaintingInWmPaint,true);SetStyle(ControlStyles.OptimizedDoubleBuffer,true);更新样式();另一种方法是使用InvokeMember方法调用双缓冲成员:typeof(Panel).InvokeMember("DoubleBuffered",BindingFlags.SetProperty|BindingFlags.Instance|BindingFlags.NonPublic,null,panel2,newobject[]{true});通过这种方式,您不必子类化Winform面板即可拥有DoubleBuffered属性。编辑:我应该注意到它受到保护。其他人已经描述了如何对其进行分类。?可以在派生的Panel类中暴露DoubleBuffered属性:以上是C#学习教程:HowtodoublebufferthePanelinC#?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注——publicclassDoubleBufferedPanel:Panel{[DefaultValue(true)]publicnewboolDoubleBuffered{get{returnbase.DoubleBuffered;}set{base.DoubleBuffered=value;}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: