怎么让pictureBox.Paint += new PaintEventHandler(this.pictureBox_Paint);执行后使picturebox的背景还原

在picturebox里做圆形时钟,以下为部分代码privatevoidtimer1_Tick(objectsender,EventArgse){pictureBox1.... 在picturebox里做圆形时钟,以下为部分代码

private void timer1_Tick(object sender, EventArgs e)
{

pictureBox1.Paint += new PaintEventHandler(this.pictureBox1_Paint);
pictureBox1.Invalidate();//只重新绘制pictureBox

}

private void pictureBox1_Paint(object sender, PaintEventArgs e){
int h = DateTime.Now.Hour;
int m = DateTime.Now.Minute;
int s = DateTime.Now.Second;

Graphics g = Graphics.FromImage(pictureBox1.Image);

//坐标中心平移
g.TranslateTransform((float)130 / 2.0f, (float)130 / 2.0f);

//时针
g.RotateTransform(30.0f * h + 30.0f * (float)(m / 60.0f));
g.DrawImage(img2, -img2.Width / 2, -img2.Height / 2, img2.Width, img2.Height);
g.RotateTransform(-30.0f * h - 30.0f * (float)(m / 60.0f));

//分针
g.RotateTransform(360.0f * (float)(m / 60.0f));
g.DrawImage(img3, -img3.Width / 2, -img3.Height / 2, img3.Width, img3.Height);
g.RotateTransform(-360.0f * (float)(m / 60.0f));

//秒针
g.RotateTransform((float)s * 360 / 60.0f);
g.DrawImage(img4, -img4.Width / 2, -img4.Height / 2, img4.Width, img4.Height);
g.RotateTransform(-(float)s * 360 / 60.0f);

//转轴
g.DrawImage(img5, -img5.Width / 2, -img5.Height / 2, img5.Width, img5.Height);

//坐标中心平移还原
g.TranslateTransform(-(float)130 / 2.0f, -(float)130 / 2.0f);

//表盖
g.DrawImage(img6, 0, 0, img1.Width, img1.Height);

}
运行后picturebox的图片每秒不断叠加 怎么解决?分不多都给了,麻烦解决下谢谢。
展开
 我来答
百度网友6eed2f8
2011-06-05 · TA获得超过5082个赞
知道大有可为答主
回答量:3423
采纳率:0%
帮助的人:3784万
展开全部
Graphics g = Graphics.FromImage(pictureBox1.Image);
这个地方改成
Graphics g = e.Graphics;//不用创建,参数里有
g.clear(Color.Black);//使用黑色背景

如果还有其他问题,可以参考我空间里的几个小游戏,里面有介绍
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式