如何用VB画直方图?

yuandream2002 2007-12-07 09:50:54
我这里有时时生成的数据(每十分钟),需要画出直方图来,举例
9:40 最大距离100米,十分钟平均距离88米
9:50 最大距离110米,十分钟平均距离98米
按照时间轴画出,每十分钟2个指标在一起(不同颜色)表示出来。

请问有什么控件或者方法做出么?
谢谢
...全文
474 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2007-12-10
我没用过MSCHART :(
你在google中搜索MSCHART,看看有没有示例吧
回复
yuandream2002 2007-12-08
谢谢楼上的,我实验了,我这里因为是时时的,每10分一次,如果7,8个小时好象就不行了?修改了,貌似只能一段时间?

所以,晚上我用了MSCHART热身运动下,可能是新手。提示我不能执行,CLICK没有定义?(简单代码如下)
Option Explicit

'定义 历史时间数
Dim htime() As String
Dim hdata1() As String
Dim hdata2() As String

Private Sub Command1_Click()
readfile

mydrow
End Sub

Private Sub Form1_Load()
readfile

mydrow
End Sub

Private Sub readfile()
'读取配置文件,按照历史资料读取全天资料
Open App.Path & "\1.txt" For Input As #n

Line Input #n, t
While t = ""

t1 = ""
t1 = t
'Line Input #n, t1
htime(i) = Trim(t1)
t2 = ""
Line Input #n, t2
hdata1(i) = Trim(t2)
t3 = ""
Line Input #n, t3
hdata2(i) = Trim(t3)
i = i + 1
Line Input #n, t
Wend






Close #n


ReDim htime(i - 1) As String
ReDim hdata1(i - 1) As String
ReDim hdata2(i - 1) As String











End Sub
'将读取的数据,利用控件画图
Private Sub mydraw()

Dim arrdata(addtime, 2) ' addtime is howlong

For i = 0 To addtime - 1
arrdatime(i, 1) = hdata1(i)
arrdatime(i, 2) = hdata2(i)
Next i
MSChart1.ChartData = arrdata



End Sub


Private Sub MSChart1_OLEStartDrag(Data As MSChart20Lib.DataObject, AllowedEffects As Long)

End Sub
回复
东方之珠 2007-12-07
graph32.ocx控件
下载地址:
http://www.ocx321.cn/soft/softdown.asp?softid=286

将其拷贝到c:\windows\system32下面,注册:regsvr32 c:\windows\system32\graph32.ocx /u
回复
用MSchart控件。
http://topic.csdn.net/t/20020508/09/704485.html
回复
vbman2003 2007-12-07
你新建一个工程,复制粘贴以上代码,按F5就可以运行,看看是不是你要的效果
如果看不明白,对照代码中的属性和方法,参照MSDN吧
也有现成的控件,如dlyme所说的MSchart
回复
yuandream2002 2007-12-07
谢谢,楼上的哥们,我正在学习中

想问下:
我是新手,只会VB6,上面的可以运行们?
回复
vbman2003 2007-12-07
这个不难,用line方法就可以,你可以画在窗体上,也可以画在picture控件上,下面是吃中饭时写的示例,自己按需要修改:

Option Explicit

Const v As Integer = 500

Private Sub Form_Load()

Dim i As Integer
With Me
.Width = 7100
.Height = 5300
.ScaleMode = 1
.AutoRedraw = True
.DrawWidth = 2
'坐标
Scale (-v, .ScaleHeight)-(.ScaleWidth, -3 * v) '重画坐标
Line (0, 0)-(.ScaleWidth, 0), &H0& 'X
Line (-10, 0)-(0, -.ScaleHeight), &H0& 'Y
'时间刻度(Y)
For i = 1 To 14
Line (i * v, 50)-(i * v, -0), &H0&
Next
'距离刻度(Y)
For i = 1 To 10
Line (0, i * v)-(50, i * v), &H0&
Next
Timer1.Enabled = True
Timer1.Interval = 1000
Randomize
.DrawWidth = 2
End With
End Sub

Private Sub Timer1_Timer()
Dim i As Single
Dim r As Integer
Dim Color As Long
Dim k As Integer
Static cnt As Integer

Color = RGB(CInt(Rnd * 255) + 1, CInt(Rnd * 255) + 1, CInt(Rnd * 255) + 1)
r = Int(Rnd * 8) + 1
k = 50
Do While k < r * v
DoEvents
Line (cnt * v, k)-((cnt + 1) * v, k), Color
k = k + 10
Loop
cnt = cnt + 1
If cnt = 13 Then Timer1.Enabled = False
End Sub

回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告