c# - 如何对面板进行双重缓冲?

标签 c# winforms doublebuffered

我有一个带有轮盘赌轮盘的面板,我需要对面板进行双重缓冲,以使其停止闪烁。谁能帮帮我?

编辑:

是的,我试过了。

panel1.doublebuffered不存在,只有this.doublebuffered。而且我不需要缓冲表单,只需要缓冲面板。

最佳答案

您需要派生自 Panel 或 PictureBox。

这取决于您选择启用缓冲的方式。

如果你设置了 this.DoubleBuffer 标志那么你应该没问题。

如果您手动更新样式,那么您必须自己在 WM_PAINT 中绘制表单。

如果您真的有雄心壮志,您可以维护自己的后台缓冲区并将其绘制为位图。


using System.Windows.Forms;

public class MyDisplay : Panel
{
    public MyDisplay()
    {
        this.DoubleBuffered = true;

        // or

        SetStyle(ControlStyles.AllPaintingInWmPaint, true);
        SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
        UpdateStyles();
    }
}

关于c# - 如何对面板进行双重缓冲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/818415/

相关文章:

c# - 使用变量加载数据 INFILE

c# - 多线程文件压缩

c# - VB.NET禁用键盘和鼠标

c# - 尝试以编程方式创建和打开新的 Outlook 电子邮件

c# - Windows 窗体 : change dataGridView's first cell origin?

c# - Windows 10 上使用双缓冲和 FormBorderStyle.None 的重绘问题

c# - 从 Excel 中读取日期列

.net - 使 WebBrowser 控件删除其缓存

c# - 制作无闪烁动画 C# 自定义控件的最佳方法是什么?