主题:如何使屏幕没有抖动?
以下是在屏幕上每间隔一秒画出一条小线段的代码,可是程序运行后,每画一次,屏幕就抖动一次,我该如何做才能去除?
private void timer1_Tick(object sender, EventArgs e)
{
if (i <= 28)//计划共绘出的电数,从零开始计数
{ //半径为150像素
int R = 150;
//设定角度为15度
double W = Math.PI/12;
//定义横坐标
int R_X;
//定义纵坐标
int R_Y;
//横坐标数值
R_X = (int)(R* Math.Sin(W * i) + 240);
//纵坐标数值
R_Y = (int)(R * Math.Cos(W * i) + 240);
//确定位图的大小和位置
Rectangle rcBitmap = new Rectangle(0, 0, 480, 480);
//建立位图
m_bmp = new Bitmap(rcBitmap.Width, rcBitmap.Height);
//从指定的位图创建绘图表面
Graphics g = Graphics.FromImage(m_bmp);
//创建画唰
Brush bb = new SolidBrush(Color.Silver);
//创建画唰
Brush bb1 = new SolidBrush(Color.Black);
//创建画唰
Pen bb2 = new Pen(Color.DarkGray, 5.0f);
//创建橙色画笔
Pen pp = new Pen(Color.Orange, 5.0f);
//以银灰色填充位图
g.FillRectangle(bb, rcBitmap);
//绘外圆边框
g.DrawEllipse(bb2, 5, 5, 470, 470);
//再次以黑色圆形填充位图
g.FillEllipse(bb1, 20, 20, 440, 440);
//以橙色绘出要显示的小线段
g.DrawLine(pp, R_X, R_Y, R_X + 3, R_Y + 3);
//释放资源
g.Dispose();
//强制重绘
this.Refresh();
//计数加1
i = i + 1;
}
else
this.timer1.Enabled = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (i <= 28)//计划共绘出的电数,从零开始计数
{ //半径为150像素
int R = 150;
//设定角度为15度
double W = Math.PI/12;
//定义横坐标
int R_X;
//定义纵坐标
int R_Y;
//横坐标数值
R_X = (int)(R* Math.Sin(W * i) + 240);
//纵坐标数值
R_Y = (int)(R * Math.Cos(W * i) + 240);
//确定位图的大小和位置
Rectangle rcBitmap = new Rectangle(0, 0, 480, 480);
//建立位图
m_bmp = new Bitmap(rcBitmap.Width, rcBitmap.Height);
//从指定的位图创建绘图表面
Graphics g = Graphics.FromImage(m_bmp);
//创建画唰
Brush bb = new SolidBrush(Color.Silver);
//创建画唰
Brush bb1 = new SolidBrush(Color.Black);
//创建画唰
Pen bb2 = new Pen(Color.DarkGray, 5.0f);
//创建橙色画笔
Pen pp = new Pen(Color.Orange, 5.0f);
//以银灰色填充位图
g.FillRectangle(bb, rcBitmap);
//绘外圆边框
g.DrawEllipse(bb2, 5, 5, 470, 470);
//再次以黑色圆形填充位图
g.FillEllipse(bb1, 20, 20, 440, 440);
//以橙色绘出要显示的小线段
g.DrawLine(pp, R_X, R_Y, R_X + 3, R_Y + 3);
//释放资源
g.Dispose();
//强制重绘
this.Refresh();
//计数加1
i = i + 1;
}
else
this.timer1.Enabled = false;
}