使用drawline画线的问题 在onpaint事件里面画,画完以后如果把窗口缩小再放大就什么都没有了,怎么解决呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在Paint事件里使用e.Graphics.DrawLine(...)来绘制就可以了。 当窗体主动或被动被刷新的时候执行的是Paint事件,在这个事件里有专门供画图使用的e.Graphics,所有的绘制工作可以都由它来完成,如果要达到立刻绘制出来图像,可以调用this.Invalidate()方法。 因为你改变大小一以后form 回调用paint事件所以在Paint事件里画就可以 楼上已经说的很清楚了,若是在pictureBox1上画的,只需pictureBox1.Image=theimage ; OnPaint和paint方法有什么区别呢?好像都是 窗口动一下就进到函数里面去了 OnPaint是基类Control的方法,也是首选的,Paint是.net里的事件,是由OnPaint引发的,因此,使用OnPaint会好些,但是Onpaint需要手动的在代码里输入override onPaint来实现,但是Paint事件在属性窗口里打开事件页找到Paint双击就可以添加事件了。使用哪一个看你的爱好来定,我个人喜欢使用重写OnPaint方法。 窗口改变了是会调用paint重绘的... private void Form1_Paint(object sender, PaintEventArgs e) { g = this.CreateGraphics(); Pen pen = new Pen(Color.Black, 2); pen.DashStyle = DashStyle.Solid; //g.TranslateTransform(130, 130, MatrixOrder.Append); g.DrawEllipse(pen, new Rectangle(0, 0, 50, 50)); g.DrawLine(pen, 130, 130, 180, 130);//初始线 this.Invalidate(); }这样窗口会不停的闪 // this.Invalidate(); 这句去掉. 修改如下:private void Form1_Paint(object sender, PaintEventArgs e) { //g = this.CreateGraphics(); 这一句去掉 Pen pen = new Pen(Color.Black, 2); pen.DashStyle = DashStyle.Solid; //g.TranslateTransform(130, 130, MatrixOrder.Append); e.Graphics.DrawEllipse(pen, new Rectangle(0, 0, 50, 50)); e.Graphics.DrawLine(pen, 130, 130, 180, 130);//初始线 //this.Invalidate(); 这一句去掉 pen.Dispose(); } 建议如下:protected override void OnPaint(PaintEventArgs e){ base.OnPaint(e); //g = this.CreateGraphics(); 这一句去掉 using (Pen pen = new Pen(Color.Black, 2)) { pen.DashStyle = DashStyle.Solid; //g.TranslateTransform(130, 130, MatrixOrder.Append); e.Graphics.DrawEllipse(pen, new Rectangle(0, 0, 50, 50)); e.Graphics.DrawLine(pen, 130, 130, 180, 130);//初始线 //this.Invalidate(); 这一句去掉 }} DATASET 保存到EXCEL 关于人人账号绑定之后的处理 奇怪,如何在C#中调用activex dll?! C#的aspx页面,留言本如何屏蔽输入的HTML代码啊? C#写的D3D程序,CPU消耗竟然达到了恐怖的50% 急切请教一个自认为简单但却没法解决的问题:如何修改TabControl的背景颜色 用户输入的文本怎样自动分行?50分不过在加! 简单的ActiveX 控件 消息传递 引用类型数据如何复制? 急求!连接数据库参数问题谢谢! 软件打包问题,请教
form 回调用paint事件
所以在Paint事件里画就可以
pictureBox1.Image=theimage ;
{
g = this.CreateGraphics();
Pen pen = new Pen(Color.Black, 2);
pen.DashStyle = DashStyle.Solid;
//g.TranslateTransform(130, 130, MatrixOrder.Append);
g.DrawEllipse(pen, new Rectangle(0, 0, 50, 50));
g.DrawLine(pen, 130, 130, 180, 130);//初始线
this.Invalidate();
}这样窗口会不停的闪
{
//g = this.CreateGraphics(); 这一句去掉
Pen pen = new Pen(Color.Black, 2);
pen.DashStyle = DashStyle.Solid;
//g.TranslateTransform(130, 130, MatrixOrder.Append);
e.Graphics.DrawEllipse(pen, new Rectangle(0, 0, 50, 50));
e.Graphics.DrawLine(pen, 130, 130, 180, 130);//初始线
//this.Invalidate(); 这一句去掉
pen.Dispose();
}
{
base.OnPaint(e);
//g = this.CreateGraphics(); 这一句去掉
using (Pen pen = new Pen(Color.Black, 2))
{
pen.DashStyle = DashStyle.Solid;
//g.TranslateTransform(130, 130, MatrixOrder.Append);
e.Graphics.DrawEllipse(pen, new Rectangle(0, 0, 50, 50));
e.Graphics.DrawLine(pen, 130, 130, 180, 130);//初始线
//this.Invalidate(); 这一句去掉
}
}