必备类库
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;//用来使用PixelFormat,初始化bitmap
代码示例
public partial class BoardComboBox : UserControl
{
Bitmap _background;
public BoardComboBox()
{
InitializeComponent();
OnSizeChanged(null);
}
protected void DrawBackground()
{
Bitmap background = new Bitmap(this.Width, this.Height, PixelFormat.Format32bppRgb);
var g = Graphics.FromImage(background);
g.Clear(this.BackColor);
//添加画图算法
_background = background;
Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
var g = e.Graphics;
g.DrawImage(_background, 0, 0);
base.OnPaint(e);
}
protected override void OnSizeChanged(EventArgs e)
{
DrawBackground();
base.OnSizeChanged(e);
}
}
对背景做了更改,则调用DrawBackground(),否则,只需要调用Invalidate()即可。
注意事项
在第一次重绘之前一定要调用一次DrawBackground()。(毕竟Bitmap还没有值【滑稽】)
一定要打开自定义控件的DoubleBuffered(双缓存)。(否则只会闪的更厉害【滑稽】)