Files

63 lines
1.8 KiB
C#
Raw Permalink Normal View History

2026-09-09 18:42:38 +08:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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
}
}