c# 调用另一个窗体中pictureBox绘图,程序无法停止 c#pictureBox_Paint反复调用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 this.pictureBox1.Paint += new PaintEventHandler(pictureBox1_Paint); 这个是绑定paint事件 就像是给button添加单击事件一样 ShowDialog(this)在窗口A中:FormB b=new FormB();B.ShowDialog(this);这样在B窗口中可以用this.owner就可以找到窗口A,可以用来窗口间传值 谢谢楼上的回复,这两个知识点算是知道个大概了还有一个主要的问题就是pictureBox_Paint事件一直在运行,除非调试时停止,或者任务管理器停止,帮我再分析分析这个现象的原因 应该是绘图的函数内部有重复吧paint函数是空的话,只运行一遍就完了 当窗体需要重绘的时候会调用Paint事件。至于窗体无法正常关闭有可能是画曲线另开了线程,关闭时没有正常结束线程。 我的程序思路是这个样子的,假如总共有30条变形曲线要画,一个picturebox画3根,画完后图片保存,然后gc.Clear(this.BackColor),清空picturebox,然后一直循环下去。但是循环到30后他又重新循环了,不明觉厉 传份Demo到资源上,我下载试试。 fd.ShowDialog(this);用this的话就表示fd这个窗体是属于当前窗口的,当然窗体最小化时fd也会最小化。。可以这么理解吧~ Paint: ..... Invalidate();当然会一直调用这个Paint方法了 this.pictureBox1.Paint 这个事件本身就是picturebox的重绘事件啊,你在上面画图了肯定会一直调用这个函数吧 1. 调试时在VS和被调试窗口间切换,因为需要重绘窗体(除非VS界面缩小,不遮盖被调试窗体),使得窗口的Paint事件反复地触发,当然会循环运行。所以Paint事件一般不容易跟踪运行。2. 楼主的Paint事件处理代码承担了太多不该承担的任务,包括绘图、清屏、存盘,占用资源过多。猜测楼主的Paint是要实现类似动画的效果,建议与Timer结合 “然后一直循环下去”是什么意思,不是画完30条重头开始循环?paint是重绘事件,控件需要重绘的时候都会触发这个事件,比如最小化后再还原,控件被别的窗体遮挡再还原,会不会是反复触发了,所以程序一直运行呢 谢谢各位兄弟姐妹们的热情答复这是我要批量画图中的一张invalidate()方法我曾经也试过,但是调试的时候运行到第30个之后又从1开始重新运行了是不是就像xky96所说的通过调试跟踪的话picturebox_Paint()会一直运行下去但即使是用了invalidate(),直接运行的程序还是不能正常关闭想上传个源码,没找到在哪上传,找到后再上传 只会这么上传了http://download.csdn.net/detail/porschee/6988067 picturebox_Paint() 这个事件是一直运行下去呀。只要你的介面有刷新就会运行。像被其他窗体档住,就会刷新。调用Inxxx那更会刷。直到你的介面控件没有变化(不被任何的东西档住)才会停。 那有什么别的方法解决吗?WIN的消息机制就是这样呀, 这么说吧,我用c# gdi+画图,首先你得在一个窗体里设置各种参数,然后再调用另一个窗体画图,曾经我也试过直接在form上画,但好像没法保存为图片,后来就用pictureBox了。 但这种方法必然会通过paint(我可能坐井观天了),也就必然会像wyd1520兄所说的一直刷新了,那是不是就表示我的程序在用户体验这一块根本就谈不上了,高手指条明路吧! 1.加不加this个人觉得问题不大;2.这个是给绘制加上事件,其实就是加上一个绘制方法,只不过这个可以自动执行,也就是在Paint的时候就执行了pictureBox1_Paint,所以你一paint,他就执行.3.可以考虑用timer控件控制执行速度和停止;4.可以dispone释放. gdi+理论上可以在所有可视控件上绘图,也不一定要通过paint。至于说你的程序不停刷新,应该是程序逻辑有问题 谢谢各位,这个问题终于解决了,这比长期雾霾天后的晴天还爽啊不要用paint事件,直接在Form中画就行了,说起来就这么简单 不过不用paint的话,form不能被其它窗体遮住,也不能做最大化,最小化之类的操作,否则图形可能会丢失 怎么在日期后面逐渐加一自动生成不同的编号 ◆检索后分页问题◆ C#程序调试报错->难得一见的报错 有用过Ranorex测试 软件的没? C#报表方面的知识 c# word 文件...printout的時候..可以不要那個xps檔嗎? 源代码管理的问题 请问怎么刷新Frames xtrareport 这个错误怎么解决? vs.net2003安装需要序列号吗?如果需要,请提供一个 请教用正则表达式提取4个字符串 C#值类型、引用类型内存分配图
这个是绑定paint事件 就像是给button添加单击事件一样
在窗口A中:
FormB b=new FormB();
B.ShowDialog(this);
这样在B窗口中可以用
this.owner就可以找到窗口A,可以用来窗口间传值
还有一个主要的问题就是pictureBox_Paint事件一直在运行,除非调试时停止,或者任务管理器停止,帮我再分析分析这个现象的原因
用this的话就表示fd这个窗体是属于当前窗口的,当然窗体最小化时fd也会最小化。。可以这么理解吧~
.....
Invalidate();
当然会一直调用这个Paint方法了
这个事件本身就是picturebox的重绘事件啊,你在上面画图了肯定会一直调用这个函数吧
“然后一直循环下去”是什么意思,不是画完30条重头开始循环?
paint是重绘事件,控件需要重绘的时候都会触发这个事件,比如最小化后再还原,控件被别的窗体遮挡再还原,会不会是反复触发了,所以程序一直运行呢
这是我要批量画图中的一张
invalidate()方法我曾经也试过,但是调试的时候运行到第30个之后又从1开始重新运行了
是不是就像xky96所说的通过调试跟踪的话picturebox_Paint()会一直运行下去
但即使是用了invalidate(),直接运行的程序还是不能正常关闭
想上传个源码,没找到在哪上传,找到后再上传
http://download.csdn.net/detail/porschee/6988067
像被其他窗体档住,就会刷新。调用Inxxx那更会刷。直到你的介面控件没有变化(不被任何的东西档住)才会停。
WIN的消息机制就是这样呀,
但这种方法必然会通过paint(我可能坐井观天了),也就必然会像wyd1520兄所说的一直刷新了,那是不是就表示我的程序在用户体验这一块根本就谈不上了,高手指条明路吧!
2.这个是给绘制加上事件,其实就是加上一个绘制方法,只不过这个可以自动执行,也就是在Paint的时候就执行了pictureBox1_Paint,所以你一paint,他就执行.
3.可以考虑用timer控件控制执行速度和停止;
4.可以dispone释放.
不要用paint事件,直接在Form中画就行了,说起来就这么简单