using System.Drawing; using System.Windows.Forms; namespace JinYuan.ControlLib { public partial class PanelEnhanced : Panel { public PanelEnhanced() { InitializeComponent(); //设置控件样式,去除缓冲 this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); this.SetStyle(ControlStyles.DoubleBuffer, true); this.SetStyle(ControlStyles.ResizeRedraw, true); this.SetStyle(ControlStyles.Selectable, true); this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); } protected override void OnPaintBackground(PaintEventArgs e) { //重载基类得背景擦除方法 //解决窗体刷新,放大和闪烁 return; } protected override void OnPaint(PaintEventArgs e) { //使用双缓冲 this.DoubleBuffered = true; if (this.BackgroundImage != null) { e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; e.Graphics.DrawImage(this.BackgroundImage, new Rectangle (0, 0, this.Width, this.Height), 0, 0, this.BackgroundImage.Width, this.BackgroundImage.Height, GraphicsUnit.Pixel); } base.OnPaint(e); } #region 减少闪烁 protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; return cp; } } #endregion } }