vb中如何实现实时曲线,历史曲线及打印

vb中如何实现实时曲线,历史曲线及打印,第1张

实时的用graphs.ocx控件,VB6安装盘里有,历史曲线最好把数据导入到EXCEL用XY散点图做,速度快,打印在EXCEL里也很灵活方便呀,我开发过和你同样的东西就是这么实现的。

很简单,你曲线是由多个点组成的,每个点都有坐标,那么我看你的实现方法应该是把每点的坐标都保存在一个地方(数组)中,然后再画出来,这样你移动一条线(line控件)就只需判断它的横坐标是否和点的横坐标相等,再把点的值提取出来就可以了。

在VB中绘制实时曲线是比较难的,一般要应用第三方控件或是Windows

API函数来完成,但是如果你对实时曲线的要求不是很高,只要能表示出当前的一般情况的话,我们可以直接应用VB提供给我们的空间来完成.

原则上讲,直接在Form里绘制曲线都是可以的,MSDN上面很多例程就是直接在Form里面绘制图形的,Form作为绘制图形的容器,不过一般应用中Form中不可避免的会有很多其他控件,所以我们选择PictureBox作为绘制曲线的容器.

实时曲线的绘制一般借助于Timer控件来完成,使用Timer控件,定期将串口或是其他仪器中监测到的数据送往PictureBox1,而曲线的绘制一般画成折线图,采用PictureBox1的Line方法绘制.具体实现如下:

1.选择需要显示的窗体Picture1,加入图片框Picture1,根据实际需要设置图片的大小并移到合适的位置,并在图片的外面画好量程----时间坐标系;然后加上Timer控件以及两个CommandButton,界面就基本设置好了.

2.建立坐标系,根据Picture1的大小和高度设置画出坐标系的X轴和Y轴:

Picture1

.ScaleMode

=

1

‘以VB的基本单位作为建立坐标轴以及绘制图形的单位

Picture1.Refresh

Picture1.CurrentX

=

Picture1.ScaleLeft

+100

Picture1.CurrentY

=

Picture1.ScaleTop

Picture1.Print

Picture1.ScaleHeight

-

100

Picture1.Line(Picture1.ScaleLeft+100,Picture1.ScaleTop+100)-(Picture1.ScaleLeft+100,

Picture1.ScaleHeight

-

100)

Picture1.CurrentX

=

Picture1.ScaleLeft

+100

Picture1.CurrentY

=

Picture1.ScaleHeight

Picture1.Print

“(0,0)”

Picture1.Line

(Picture1.ScaleLeft

+

100,

Picture1.ScaleHeight

-

100)-(Picture1.ScaleWidth

-

100,

Picture1.ScaleHeight

-

100)

Picture1.CurrentX

=

Picture1.ScaleWidth

Picture1.CurrentY

=

Picture1.ScaleHeight

Picture1.Print

Picture1.ScaleWidth-100

Picture1.AutoRedraw

=

True

‘必要时,用存储在内存中的图象进行重绘

3.绘制曲线并保存,我们这里以正弦曲线作为绘制曲线的数据来源,具体应用是可以采用由串口或其他仪器采集得到的数据.首先我们绘制一条中线,然后在Timer控件的Time事件中绘制曲线:

Picture1.Line

(Picture1.ScaleLeft,

CInt(Picture1.ScaleHeight

/

2))-(Picture1.ScaleWidth,

CInt(Picture1.ScaleHeight

/

2))

‘绘制中线

Private

Sub

Timer1_Timer()

Dim

y1

As

Integer

y1

=

CInt(Sin((x

-

Picture1.Left)

/

20

/

180

*

pi)

*

Picture1.ScaleHeight

/

2)

y1

=

CInt((Picture1.ScaleHeight

+

1000)

/

2)

-

y1

Picture1.Line

(x,

y)-(x

+

20,

y1)

x

=

x

+

20

y

=

y1

If

x

>=

Picture1.ScaleWidth

Then

SavePicture

Picture1.Image,

"c:\sin.bmp"

‘保存图画,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11633484.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存