| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9565 人关注过本帖, 1 人收藏
标题:VB6.0 用mschart控件绘制多条动态曲线怎么做到 请指教 谢谢了
取消只看楼主 加入收藏
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
结帖率:88.89%
收藏(1)
已结贴  问题点数:20 回复次数:9 
VB6.0 用mschart控件绘制多条动态曲线怎么做到 请指教 谢谢了
VB6.0 用mschart控件绘制多条动态曲线怎么做到 请指教 谢谢了
1.工控的范围
2.用PLC获取4路模拟量动态显示曲线
3.数据已经获取
不知道启用mschart控件怎么实现 请高手指点 谢谢了
搜索更多相关主题的帖子: 动态 
2015-01-06 14:37
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 2楼 lianyicq
动态的意思是 每一秒读一次plc的数据 mschart控件中也显示相应的曲线 也就是一秒钟加一个点 我用一条曲线绘制的图以完成 但不知怎么设置多条曲线显示 就是同时绘制多条 我这里需要四条曲线 您能帮忙吗 谢谢了
2015-01-06 15:06
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 4楼 lianyicq
这个例子我看过 不是动态的 我要用timer控件触发 接受
2015-01-06 16:09
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 6楼 lianyicq
现在不知道怎么实现 不知道怎么编程 我只做出了一条动态曲线(实时采集并实时显示的) 但不知道怎么再加 不清楚数组 怎么定义 并给mschart控件赋值
现在不考虑效率 只要能实时动态显示多条曲线就可以了 1秒钟采集一个点 一共采集600秒 我用的散点图类型  重点是数组的定义及赋值 以及给machart控件赋值  您这知道吗 求帮助 效率和画面闪烁不考虑
2015-01-07 10:40
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 6楼 lianyicq
Dim mydata(600, 1)
Dim i As Single
Private Sub Form_Load()
With MSChart1
     .TitleText = "压强变化 kpa/s"
'    '设置图线的外观
    .Plot.SeriesCollection(1).Pen.Width = 30
       .Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid
        .Plot.SeriesCollection(2).Pen.Width = 30
       .Plot.SeriesCollection(2).Pen.Style = VtPenStyleSolid
        .Plot.SeriesCollection(3).Pen.Width = 30
       .Plot.SeriesCollection(3).Pen.Style = VtPenStyleSolid
      
      
'    '设置XY轴
    .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False
    .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False
    '// 设置最大值
    .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 600 '设置横轴标注最大值
    .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1000 '设置纵轴标注最大值
    '// 设置最小值
    .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 400
    .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0
    .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 6 'X轴主要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 'Y轴主要网格数量
    .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量
    .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted
    .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted
   ' .Plot.Axis(VtChAxisIdY).AxisTitle = "压强(kpa)"
       .Plot.Axis(VtChAxisIdX).AxisTitle = "时间(s)"
    MSChart1.Plot.AutoLayout = False
    MSChart1.Plot.UniformAxis = False
    MSChart1.chartType = VtChChartType2dXY '设置图形为二维散点图
'    MSChart1.ChartData = mydata
   
    'MSChart1.Backdrop.Fill.Style = VtFillStyleBrush
    'MSChart1.Backdrop.Fill.Brush.FillColor.Set 0, 0, 0
'   For i = 1 To 600
''   .Row = i
'   .RowLabel = i
'   Next
   
   
    End With
End Sub

Private Sub Timer1_Timer()

mydata(i, 0) = i
mydata(i, 1) = 700
MSChart1.ChartData = mydata
i = i + 1

    If i > 600 Then
    Timer1.Enabled = False
    Else
    Timer1.Enabled = True
    End If
End Sub
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

这是我做的程序 只能动态显示一条曲线  显示多条 怎能定义数组 和 给mschart控件赋值
2015-01-07 10:52
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏(1)
得分:0 
回复 8楼 lianyicq
按照你说的方法我又试了一下,程序如下:
Dim mydata(600, 2)
Dim i As Single
Private Sub Form_Load()
With MSChart1
     .TitleText = "压强变化 kpa/s"
'    '设置图线的外观
    .Plot.SeriesCollection(1).Pen.Width = 30
       .Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid
        .Plot.SeriesCollection(2).Pen.Width = 30
       .Plot.SeriesCollection(2).Pen.Style = VtPenStyleSolid
'        .Plot.SeriesCollection(3).Pen.Width = 30
'       .Plot.SeriesCollection(3).Pen.Style = VtPenStyleSolid
      
      
'    '设置XY轴
    .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False
    .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False
    '// 设置最大值
    .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 600 '设置横轴标注最大值
    .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1000 '设置纵轴标注最大值
    '// 设置最小值
    .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 400
    .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0
    .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 6 'X轴主要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 'Y轴主要网格数量
    .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量
    .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted
    .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted
   ' .Plot.Axis(VtChAxisIdY).AxisTitle = "压强(kpa)"
       .Plot.Axis(VtChAxisIdX).AxisTitle = "时间(s)"
    MSChart1.Plot.AutoLayout = False
    MSChart1.Plot.UniformAxis = False
    MSChart1.chartType = VtChChartType2dLine
    'VtChChartType2dXY '设置图形为二维散点图
'    MSChart1.ChartData = mydata
   
    'MSChart1.Backdrop.Fill.Style = VtFillStyleBrush
    'MSChart1.Backdrop.Fill.Brush.FillColor.Set 0, 0, 0
'   For i = 1 To 600
''   .Row = i
'   .RowLabel = i
'   Next
   
   
    End With
End Sub

Private Sub Timer1_Timer()

mydata(1, 0) = 0
mydata(i, 0) = i
mydata(1, 1) = 700
mydata(i, 1) = 700
mydata(1, 2) = 500
mydata(i, 2) = 500

MSChart1.ChartData = mydata
i = i + 1

    If i > 600 Then
    Timer1.Enabled = False
    Else
    Timer1.Enabled = True
    End If
End Sub
效果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

不知道 是哪里的问题  就是图表显示的不清楚 我需要怎么改  谢谢了
2015-01-07 11:14
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 12楼 lianyicq
我改成20个之后,效果好点了,但我必须要600个采集点,一秒钟一个,我需要采集10分钟的数据,我的程序:
Dim mydata(20, 2)
Dim i As Single
Private Sub Form_Load()
With MSChart1
     .TitleText = "压强变化 kpa/s"
'    '设置图线的外观
    .Plot.SeriesCollection(1).Pen.Width = 30
       .Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid
        .Plot.SeriesCollection(2).Pen.Width = 30
       .Plot.SeriesCollection(2).Pen.Style = VtPenStyleSolid
'        .Plot.SeriesCollection(3).Pen.Width = 30
'       .Plot.SeriesCollection(3).Pen.Style = VtPenStyleSolid
      
      
'    '设置XY轴
    .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False
    .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False
    '// 设置最大值
    .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 20 '设置横轴标注最大值
    .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1000 '设置纵轴标注最大值
    '// 设置最小值
    .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 400
    .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0
    .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 5 'X轴主要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 'Y轴主要网格数量
    .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量
    .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted
    .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted
   ' .Plot.Axis(VtChAxisIdY).AxisTitle = "压强(kpa)"
       .Plot.Axis(VtChAxisIdX).AxisTitle = "时间(s)"
    MSChart1.Plot.AutoLayout = False
    MSChart1.Plot.UniformAxis = False
    MSChart1.chartType = VtChChartType2dLine
    'VtChChartType2dXY '设置图形为二维散点图
'    MSChart1.ChartData = mydata
   
    MSChart1.Backdrop.Fill.Style = VtFillStyleBrush
    MSChart1.Backdrop.Fill.Brush.FillColor.Set 255, 255, 255
'   For i = 1 To 600
''   .Row = i
'   .RowLabel = i
'   Next

   .Refresh
   
   
    End With
End Sub

Private Sub Timer1_Timer()

mydata(1, 0) = 0
mydata(i, 0) = i
mydata(1, 1) = 700
mydata(i, 1) = 700
mydata(1, 2) = 500
mydata(i, 2) = 500

MSChart1.ChartData = mydata
i = i + 1

    If i > 20 Then
    Timer1.Enabled = False
    Else
    Timer1.Enabled = True
    End If
End Sub
效果如图:
图片附件: 游客没有浏览图片的权限,请 登录注册

我只做了两条曲线,但显示的是3条并且还不是从x=0处开始的,有办法改吗 还有 我需要600个点 有办法完善吗  谢谢了
如果vb6.0用mschart控件画多条动态曲线有弊病的话,还有别的更好的方法实现吗 谢谢了
2015-01-07 13:01
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 12楼 lianyicq
采集600个点,不画x轴坐标的效果是这样的
图片附件: 游客没有浏览图片的权限,请 登录注册

底下有黑色道道 很难看
2015-01-07 13:05
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 15楼 lianyicq
我是刚接触vb的 以前有些基础基础也只限于课本上的东西 但没做过工程 不懂您说的用画点和线的方法是什么 您能指导一下吗 谢谢了
2015-01-07 13:27
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 17楼 lianyicq
line方法 是在picture控件中画吗 我之前见过例子 如果是的话 我就试着画画试试 谢谢您的帮助
2015-01-07 14:00
快速回复:VB6.0 用mschart控件绘制多条动态曲线怎么做到 请指教 谢谢了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028335 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved