2,670
社区成员




using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Rectangle re = new Rectangle(0, 0, 20, 20); //小球初始的坐标和大小
int setpX = 5;
int setpY = 5;
private void timer1_Tick(object sender, EventArgs e)
{
Show(this);
}
public void Show(Control ctl)
{
Graphics g = ctl.CreateGraphics(); //这是要绘图的控件的Graphics
BufferedGraphicsContext dc = new BufferedGraphicsContext();
BufferedGraphics bg = dc.Allocate(g, new Rectangle(new Point(0,
0), ctl.Size));//根据控件的Graphics初始缓冲Graphics
Graphics gBuff = bg.Graphics; //这是缓冲Graphics
///以下是绘图代码
re.X += setpX;
re.Y += setpY;
if (re.X >= ctl.Width)
{
setpX = -setpX;
}
if (re.X <= 0)
{
setpX = -setpX;
}
if (re.Y >= ctl.Height)
{
setpY = -setpY;
}
if (re.Y <= 0)
{
setpY = Math.Abs(setpY);
}
SolidBrush sb = new SolidBrush(Color.Red);
gBuff.FillEllipse(sb,re);
gBuff.DrawEllipse(new Pen(Color.Blue), 0, 0, re.X - 2, re.Y -
2);
gBuff.DrawEllipse(new Pen(Color.Yellow), 0, 0, re.X - 4, re.Y
- 4);
gBuff.DrawEllipse(new Pen(Color.Tan), 0, 0, re.X - 6, re.Y -
6);
//把缓冲Graphics的图一次性绘制到控件的Graphics
bg.Render(g);
sb.Dispose();
bg.Dispose();
g.Dispose();
}
}
}