发表于:2003/6/17 15:22:00
#0楼
如何绘制快速连续滚动的曲线
<转自问专家>
编号:QA003484
建立日期: 2000年11月1日 最后修改日期:2000年11月7日
所属类别:
Visual Basic - 图形、图象
田雨:
操作系统:WIN98
编程工具:VB5.0
问题:问题题目:如何绘制快速(毫秒级)连续滚动的曲线?本人目前有一个问题,本人在PICTUREBOX控件中绘制曲线,需要一个曲线连续滚动的效果,即曲线从屏幕绘制最左侧到最右侧时,如果接着绘制的话,则旧曲线不断向左平移,同时新曲线逐点在屏幕最右侧不断绘制,形成了连续滚动的效果(即一个监测曲线),本人从网上下载了一个高速计时源码,每画一点的时间是10毫秒,以前本人也编出一个程序,原理是
一、 先在PICTUREBOX控件上画出坐标
二、 从屏幕绘制最左侧到最右侧时画440点(用LINE方法),同时每一点的值存放到数组中,绘制每点间隔9秒。
三、 当第一次曲线画到最右侧时,先调用绘制坐标的程序,即在PICTUREBOX控件上重绘坐标,同时将数组中的第一个数不要,将后439个点存入数组中(使用FOR—NEXT循环),然后在这个坐标上画这439个点,等九秒时间到后,第440个数则写入数组,同时绘制曲线,下一个点到来时,再重复第三步。由于人视觉上的原因,就会形成以上连续滚动的效果。
本来这种方法比较烦琐,效率也低,但由于系统要求不严格,到也使用良好,但现在采用这种方法则不可,因为间隔时间仅有10毫秒,在10毫秒一到时,根本连步奏三中FOR—NEXT循环写数都完成不了,结果就只有死机,我因此考虑得使用使PICTUREBOX中部分图像平移同时最后一点在补充过来的方法看是否能搞定。但本人能力有限,至今没有找到解决方法,因此特此慕名向贵网站个路高手讨教,尽管没有理由向诸位提出时间上尽快解决的要求,但还是真诚希望诸位能尽快想个主意,出个办法,本人在此不胜感激。不管问题解决与否,再次向诸位表示衷心感谢。只要能实现上述功能,无论使用什么控件,什么方法都可。
水平: 中级
回答:
可以采用“位图自身拷贝”的方法,具体是:你在位图的前十分之一(无所谓)的区域绘图,然后利用bitblt函数进行自身拷贝(将源pDC和目的pDC设为一样即可),将前(左)十分之一的图形拷贝到相邻的十分之一区域,然后重复前一过程,这样就可以形成动画。
<转自问专家>
编号:QA003484
建立日期: 2000年11月1日 最后修改日期:2000年11月7日
所属类别:
Visual Basic - 图形、图象
田雨:
操作系统:WIN98
编程工具:VB5.0
问题:问题题目:如何绘制快速(毫秒级)连续滚动的曲线?本人目前有一个问题,本人在PICTUREBOX控件中绘制曲线,需要一个曲线连续滚动的效果,即曲线从屏幕绘制最左侧到最右侧时,如果接着绘制的话,则旧曲线不断向左平移,同时新曲线逐点在屏幕最右侧不断绘制,形成了连续滚动的效果(即一个监测曲线),本人从网上下载了一个高速计时源码,每画一点的时间是10毫秒,以前本人也编出一个程序,原理是
一、 先在PICTUREBOX控件上画出坐标
二、 从屏幕绘制最左侧到最右侧时画440点(用LINE方法),同时每一点的值存放到数组中,绘制每点间隔9秒。
三、 当第一次曲线画到最右侧时,先调用绘制坐标的程序,即在PICTUREBOX控件上重绘坐标,同时将数组中的第一个数不要,将后439个点存入数组中(使用FOR—NEXT循环),然后在这个坐标上画这439个点,等九秒时间到后,第440个数则写入数组,同时绘制曲线,下一个点到来时,再重复第三步。由于人视觉上的原因,就会形成以上连续滚动的效果。
本来这种方法比较烦琐,效率也低,但由于系统要求不严格,到也使用良好,但现在采用这种方法则不可,因为间隔时间仅有10毫秒,在10毫秒一到时,根本连步奏三中FOR—NEXT循环写数都完成不了,结果就只有死机,我因此考虑得使用使PICTUREBOX中部分图像平移同时最后一点在补充过来的方法看是否能搞定。但本人能力有限,至今没有找到解决方法,因此特此慕名向贵网站个路高手讨教,尽管没有理由向诸位提出时间上尽快解决的要求,但还是真诚希望诸位能尽快想个主意,出个办法,本人在此不胜感激。不管问题解决与否,再次向诸位表示衷心感谢。只要能实现上述功能,无论使用什么控件,什么方法都可。
水平: 中级
回答:
可以采用“位图自身拷贝”的方法,具体是:你在位图的前十分之一(无所谓)的区域绘图,然后利用bitblt函数进行自身拷贝(将源pDC和目的pDC设为一样即可),将前(左)十分之一的图形拷贝到相邻的十分之一区域,然后重复前一过程,这样就可以形成动画。
如您对论坛有好的建议或创想,请加大版主微信号:gkong2015
大版主推荐【工控百家谈】微信公众号,业界大拿原创内容分享