c#双缓冲按钮

本文关键字:按钮 缓冲 | 更新日期: 2023-09-27 18:11:26

过去几个月我一直在做一个项目,有一个问题我解决不了。我有一个带有控件的Windows窗体。当用户改变控件大小时,应用程序就会触发sizechanged事件,我就会相应地移动控件。主要的问题是按钮,因为它们有图像——实际上更准确地说——它们是平面的,没有边界,上面有一个图像,实际上是一个绘制的按钮(我没有用代码绘制它的原因是图像很复杂)。在某些机器上,当应用程序调整大小时,它们开始闪烁。Form被设置为DoubleBuffered true,我已经使用这个函数来设置按钮的双缓冲。

public static void SetDoubleBuffered(System.Windows.Forms.Control c)
    {
        if (System.Windows.Forms.SystemInformation.TerminalServerSession)
            return;
        System.Reflection.PropertyInfo aProp =
              typeof(System.Windows.Forms.Control).GetProperty(
                    "DoubleBuffered",
                    System.Reflection.BindingFlags.NonPublic |
                    System.Reflection.BindingFlags.Instance);
        aProp.SetValue(c, true, null);
    }

有什么建议吗?

c#双缓冲按钮

当我遇到双缓冲问题时,这对我帮助很大。代码有点旧,但仍然涵盖了基本内容。

http://www.codeproject.com/KB/graphics/DoubleBuffering.aspx

希望有帮助。:)