using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace videoGather { public class DoubleBufferedPanel : Panel { private Bitmap _backImage; // 新增背景图属性 public Bitmap BackImage { get => _backImage; set { if (_backImage != null) { _backImage.Dispose(); } _backImage = value; Invalidate(); // 触发重绘 } } // 构造函数 public DoubleBufferedPanel() { // 启用双缓冲 this.DoubleBuffered = true; // 内置支持 // 设置样式以避免闪烁 this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true); } protected override void OnPaintBackground(PaintEventArgs e) { // 禁用默认背景绘制(关键!) // base.OnPaintBackground(e); // 注释掉这行 } protected override void OnPaint(PaintEventArgs e) { // 绘制自定义背景图 if (_backImage != null) { e.Graphics.DrawImage(_backImage, ClientRectangle); } base.OnPaint(e); // 保持原有绘制逻辑 } protected override void Dispose(bool disposing) { if (disposing) { _backImage?.Dispose(); } base.Dispose(disposing); } } }