63 lines
1.8 KiB
C#
63 lines
1.8 KiB
C#
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
|
||
|
|
}
|
||
|
|
}
|