56 lines
1.6 KiB
C#
56 lines
1.6 KiB
C#
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
|
|
}
|
|
}
|