当在winform中放置很多Button控件,并且画面还有背景,每个Button都还有背景的时候,显示画面时就会产生闪烁的效果,如果机器性能好的话,画面会比较快的加载完,闪烁的情况不会很明显,但是如果机器性能不佳的话,则会给用户很差的体验。即使画面和Button采用了双缓存,效果也不明显。因此需要对C#中的Button加以重载并重写部分代码。就可以避免这种情况发生了。废话不多说了,代码如下:
public class ButtonEx : Button
{
public ButtonEx()
{
}
//基类的方法不能用
protected override void OnPaintBackground(PaintEventArgs e)
{
return;
}
protected override void OnPaint(PaintEventArgs e)
{
//一定要设置背景图哦
if (this.BackgroundImage != null)
{
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
e.Graphics.DrawImage(this.BackgroundImage, new System.Drawing.Rectangle(0, 0, this.Width, this.Height),
0, 0, this.BackgroundImage.Width, this.BackgroundImage.Height,
System.Drawing.GraphicsUnit.Pixel);
}
//基类的OnPaint方法不能使用
//base.OnPaint(e);
}
}
本文介绍了一个在WinForm应用中,通过重载Button类并重写部分方法,来解决大量Button控件和背景图导致的画面闪烁问题的解决方案。特别针对性能不佳的机器,提供了一种有效提升用户体验的方法。
1937

被折叠的 条评论
为什么被折叠?



