参考文档:http://www.2cto.com/kf/201404/295500.html
以下为完整的示例代码:
该示例是展示一个在界面上运动的圆形
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace panelLib2Test
{
public partial class Form3 : Form
{
int val = 1;
Bitmap bmp = new Bitmap(600, 600);
Graphics g;
public Form3()
{
InitializeComponent();
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
//开启双缓冲
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true);
g = Graphics.FromImage(bmp);
}
private void Form3_Load(object sender, EventArgs e)
{
g.FillEllipse(Brushes.Green, val * 10, val * 10, 10, 10);
g.DrawEllipse(new Pen(System.Drawing.Color.Red), val, 10, 100, 100);
this.CreateGraphics().DrawImage(bmp, 0, 0);
}
private void Form3_Paint(object sender, PaintEventArgs e)
{
//g.FillEllipse(Brushes.Green, val * 10, val * 10, 10, 10);
//g.DrawEllipse(new Pen(System.Drawing.Color.Red), val, 10, 100, 100);
//this.CreateGraphics().DrawImage(bmp, 0, 0);
}
private void timer1_Tick(object sender, EventArgs e)
{
val++;
label1.Text = val.ToString();
g.Clear(Form3.DefaultBackColor);//这是清除画布中前一个图片
g.DrawEllipse(new Pen(System.Drawing.Color.Red), val, 10, 100, 100);
this.CreateGraphics().DrawImage(bmp, 0, 0);
}
}
}