| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1018 人关注过本帖
标题:pic.line 画出来的为什么是一个个点呢
只看楼主 加入收藏
wxe0510
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-4-21
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:4 
pic.line 画出来的为什么是一个个点呢
Private Sub DrawRealLine(picX As PictureBox, TimeCountX As Integer, DataFromComX As Integer, DataFromComLastX As Integer)

If TimeCountX - 1 > 0 And (TimeCountX - 1) * 15 < pic.Width Then
picX.Line ((TimeCountX - 1) * 15, DataFromComLastX * 70)-(TimeCountX * 15, DataFromComX * 70), vbBlue
End If
If (TimeCountX - 1) * 15 > pic.Width Then
TimeCount = 0
pic.Cls
End If

End Sub
这是画实时曲线的函数,理论上画出来的应该是线而不是点,但我画出来的却是一个个点,怎么回事呢?


Option Explicit

Dim DataFromCom As Integer
Dim DataFromComLast As Integer
Dim TimeCount As Integer


Private Sub Check1_Click()
If Check1.Value = 1 Then
MSComm1.InBufferSize = 1024
MSComm1.InBufferCount = 0
MSComm1.InputMode = 1
= 3
MSComm1.Settings = "9600,N,8,1"

Check2.Enabled = False

End If
If Check1.Value = 0 Then
Timer1.Enabled = False
Check2.Enabled = True

End If
End Sub

Private Sub Check2_Click()

If Check2.Value = 1 Then
MSComm1.InBufferSize = 1
MSComm1.InBufferCount = 0
MSComm1.InputMode = comInputModeText
= 2
MSComm1.Settings = "9600,N,8,1"

Check1.Enabled = False

End If
If Check2.Value = 0 Then
Timer1.Enabled = False
Check1.Enabled = True

End If
End Sub

Private Sub Command1_Click(Index As Integer)
'Timer1.Enabled = True
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
End Sub

Private Sub Command2_Click(Index As Integer)
Timer1.Enabled = False
MSComm1.PortOpen = False

End Sub

Private Sub Command3_Click()
Unload Form1
End Sub
Private Sub Form_Unload(Cancel As Integer)
    If MSComm1.PortOpen = True Then
    MSComm1.PortOpen = False
    End If
End Sub

Private Sub Form_Load()
Timer1.Interval = 1
Timer1.Enabled = False
PicScale pic

End Sub
Private Sub PicScale(picX As PictureBox)
picX.Scale (0, 8750)-(picX.ScaleWidth, -1400)
End Sub

Private Sub DrawRealLine(picX As PictureBox, TimeCountX As Integer, DataFromComX As Integer, DataFromComLastX As Integer)

If TimeCountX - 1 > 0 And (TimeCountX - 1) * 15 < pic.Width Then
picX.Line ((TimeCountX - 1) * 15, DataFromComLastX * 70)-(TimeCountX * 15, DataFromComX * 70), vbBlue
End If
If (TimeCountX - 1) * 15 > pic.Width Then
TimeCount = 0
pic.Cls
End If

End Sub

Private Sub MSComm1_OnComm()
Dim byte1() As Byte

Dim a As Byte
Dim b As Byte
Dim s As Integer
If MSComm1.InBufferCount > 0 Then
byte1 = MSComm1.Input

  a = byte1(0)
  b = byte1(1)
  s = a * 256 + b
  Text1.Text = s
  DataFromCom = Text1
  DataFromComLast = DataFromCom
  TimeCount = TimeCount + 1
  DrawRealLine pic, TimeCount, DataFromCom, DataFromComLast



End If
End Sub  这是整段编程
图片附件: 游客没有浏览图片的权限,请 登录注册
2015-04-26 14:23
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:10 
没有数据验证,是一个点的原因可能在判断语句,即“If TimeCountX - 1 > 0 And (TimeCountX - 1) * 15 < pic.Width Then”这一句,可以单步调试下就知道了。只有某一次没画点才会造成线不连续。如果把语句稍微改下,应该画的就是线,改动如下:
picX.Line -(TimeCountX * 15, DataFromComX * 70), vbBlue  '未验证,好像这样会从上一次的坐标到本次坐标划线,如果没哟上一次坐标,则默认上一次坐标为0,0



[ 本帖最后由 xzlxzlxzl 于 2015-4-26 16:30 编辑 ]
2015-04-26 15:33
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:10 
回复 楼主 wxe0510
  a = byte1(0)
  b = byte1(1)
  s = a * 256 + b
你确定下位机是先传高八位?一般是低字节中前,高字节在后.建议调试的时候,开一文本框,实时显示串口来的数据.便于查错.
用你的坐标系设定、画线代码,画了六个点。没发现问题。只有根据来的数据逐步分析。建议定义一个横轴缩放变量。
图片附件: 游客没有浏览图片的权限,请 登录注册



大开眼界
2015-04-27 09:24
wxe0510
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-4-21
收藏
得分:0 
以下是引用xzlxzlxzl在2015-4-26 15:33:20的发言:

没有数据验证,是一个点的原因可能在判断语句,即“If TimeCountX - 1 > 0 And (TimeCountX - 1) * 15 < pic.Width Then”这一句,可以单步调试下就知道了。只有某一次没画点才会造成线不连续。如果把语句稍微改下,应该画的就是线,改动如下:
picX.Line -(TimeCountX * 15, DataFromComX * 70), vbBlue  '未验证,好像这样会从上一次的坐标到本次坐标划线,如果没哟上一次坐标,则默认上一次坐标为0,0

确实这么做画出来的是线,但我并不希望第一次坐标是(0,0) 怎么办?
2015-04-27 16:24
wxe0510
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-4-21
收藏
得分:0 
谢谢楼上各位,问题已经解决了
2015-04-28 12:17
快速回复:pic.line 画出来的为什么是一个个点呢
数据加载中...
 
   



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

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