vb中mschart的问题
1个回答
展开全部
既然你画出曲线
那么一定有一个函数计算公式,例如 y=x*3
那x增加的步长是多少呢?
比如上面的公式x=1时y=3,x=2时y=6,此时步长为1,因为x递增单位是1
再比如x=5时y=15,x=10时y=30,此时步长为5,因为x递增单位是5
很清楚的能看到,如果步长单位越小,那么你的曲线就画的越精确,不过在我们画曲线的时候,步长单位要根据你的工程的需要来确定,足够使用的精确度就可以了.
比如我们要画一个年收入报表,按月来计算,那么我们的步长精确度就不需要画每日的,只需要把每月的平均值画下来就足够了.
如果我们需要画一个电表的月统计曲线,那么我们可能要确定的精确度是每日的步长,或者每小时的步长.同样的道理,我们可能就不需要统计每分钟或者每秒的那种高精确度.
由此看来,步长,也就是x的递增量,要根据你的工程需求来确定.
当确定了x步长,下一步仅仅是把每一个x对应的y计算出来,
有了x和y值,相当于在一个平面内有了x坐标点,和y的坐标点,接下来就建立平面坐标,那么曲线就很方便的画了出来.
有一个现成的实例,windows任务管理器中的,"性能"选项卡,就是cpu 的使用曲线和分页文件的使用曲线,我们可以通过调整"查看"中的"更新速度"的高与低来确定其曲线的步长,可以感受一下其区别.它的曲线是以时间来作图的,低的话,可能好几秒才统计一次,高的话可能一秒统计一次,也体现了精确度的差别.
你可以试试帮你做的下面的一个小代码
Private Sub Command1_Click()
Const PI As Single = 3.1415926
Dim x, y As Single
For x = 0 To 360 Step 0.01
DoEvents
y = Cos(PI * x * 30 / 180)
Me.PSet (x * 200, y * 500 + Me.Height / 2), vbBlue
Next x
End Sub
这个是画的是反余弦函数,x步长我定义成了0.01
y = Cos(PI * x * 30 / 180) 这句是公式,因为VB中使用的是梯度,并不是我们使用的度,所以这是梯度的cos公式.
计算出了y,以后,x和y都是已知量,
我通过窗体的pset方法进行画线
因为VB默认是以Twip为显示单位,太小了,看不见,所以x*200的意思是,在x轴方向上放大200倍,同样的道理,我在Y轴上,放大了500倍.
VB规定0,0坐标是窗体的左上角,所以这个坐标上下方向是反的,所以为了显示合理,我在y*500后面加了个me.height/2,这个的意思是让当前窗体高度的一半,作为y轴的0.
当然这个小程序很不严格,说起来应该还是个错误的程序,因为在显示上y轴的递增是向下的,所以图形的上下是反的.不过原理知道了,下面就很好做了.
那么一定有一个函数计算公式,例如 y=x*3
那x增加的步长是多少呢?
比如上面的公式x=1时y=3,x=2时y=6,此时步长为1,因为x递增单位是1
再比如x=5时y=15,x=10时y=30,此时步长为5,因为x递增单位是5
很清楚的能看到,如果步长单位越小,那么你的曲线就画的越精确,不过在我们画曲线的时候,步长单位要根据你的工程的需要来确定,足够使用的精确度就可以了.
比如我们要画一个年收入报表,按月来计算,那么我们的步长精确度就不需要画每日的,只需要把每月的平均值画下来就足够了.
如果我们需要画一个电表的月统计曲线,那么我们可能要确定的精确度是每日的步长,或者每小时的步长.同样的道理,我们可能就不需要统计每分钟或者每秒的那种高精确度.
由此看来,步长,也就是x的递增量,要根据你的工程需求来确定.
当确定了x步长,下一步仅仅是把每一个x对应的y计算出来,
有了x和y值,相当于在一个平面内有了x坐标点,和y的坐标点,接下来就建立平面坐标,那么曲线就很方便的画了出来.
有一个现成的实例,windows任务管理器中的,"性能"选项卡,就是cpu 的使用曲线和分页文件的使用曲线,我们可以通过调整"查看"中的"更新速度"的高与低来确定其曲线的步长,可以感受一下其区别.它的曲线是以时间来作图的,低的话,可能好几秒才统计一次,高的话可能一秒统计一次,也体现了精确度的差别.
你可以试试帮你做的下面的一个小代码
Private Sub Command1_Click()
Const PI As Single = 3.1415926
Dim x, y As Single
For x = 0 To 360 Step 0.01
DoEvents
y = Cos(PI * x * 30 / 180)
Me.PSet (x * 200, y * 500 + Me.Height / 2), vbBlue
Next x
End Sub
这个是画的是反余弦函数,x步长我定义成了0.01
y = Cos(PI * x * 30 / 180) 这句是公式,因为VB中使用的是梯度,并不是我们使用的度,所以这是梯度的cos公式.
计算出了y,以后,x和y都是已知量,
我通过窗体的pset方法进行画线
因为VB默认是以Twip为显示单位,太小了,看不见,所以x*200的意思是,在x轴方向上放大200倍,同样的道理,我在Y轴上,放大了500倍.
VB规定0,0坐标是窗体的左上角,所以这个坐标上下方向是反的,所以为了显示合理,我在y*500后面加了个me.height/2,这个的意思是让当前窗体高度的一半,作为y轴的0.
当然这个小程序很不严格,说起来应该还是个错误的程序,因为在显示上y轴的递增是向下的,所以图形的上下是反的.不过原理知道了,下面就很好做了.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询