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);
}
有什么建议吗?
当我遇到双缓冲问题时,这对我帮助很大。代码有点旧,但仍然涵盖了基本内容。
http://www.codeproject.com/KB/graphics/DoubleBuffering.aspx希望有帮助。:)