如何在picture控件同时画两条线
软件功能介绍如下:
1:如果选择Check1在picture上画一条线,如果选择Check2在picture上画另一条线,现在单独选择Check1或Check2都能实现画线,但是如果同时选择Check1和Check2还是画一条线,就是色彩交替而已。请问如何实现同时选择Check1和Check2,画两条不同的线
2:代码如下:(截取了部分代码,未定义变量,函数不存在问题)
Private Sub Check1_Click()
Check1.Value = 1
If Check1.Value = 1 Then
Timer1.Enabled = True
Timer1.Interval = 200
End If
End Sub
Private Sub Check2_Click()
Check2.Value = 1
If Check2.Value = 1 Then
Timer2.Enabled = True
Timer2.Interval = 200
End If
End Sub
Private Sub Form_Load()
picture1color1 = &HFF& '设置颜色为红色
picture1color2 = &HFF0000 '设置颜色为蓝色
End Sub
Private Sub Timer1_Timer()
'---------------------------------------温度图的实现---------------------------------------------
k = ad_chn(16, ReadLen - 1) '从采集卡中采集数据
result2 = BitBlt(Picture1.hDC, 4, 0, Picture1.Width / Screen.TwipsPerPixelX, Picture1.Height / Screen.TwipsPerPixelY, Picture1.hDC, 0, 0, SRCCOPY)
p = ((-4) * Val(k) / 4095 + 3) * (Picture1.Height / Screen.TwipsPerPixelY)
'p = 4 * ((4095 - CSng(k) - 1023) / 4095 * (Picture1.Height / Screen.TwipsPerPixelY))
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '****************************** ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
Picture1.Line (4, p)-(8, PrevP(0)), picture1color1 '在picture1上画线并设置颜色
PrevP(0) = p
'------------------------------------------------------------
End Sub
Private Sub Timer2_Timer()
'---------------------------------------温度图的实现---------------------------------------------
k = ad_chn(17, ReadLen - 1)
result2 = BitBlt(Picture1.hDC, 4, 0, Picture1.Width / Screen.TwipsPerPixelX, Picture1.Height / Screen.TwipsPerPixelY, Picture1.hDC, 0, 0, SRCCOPY)
p = ((-4) * Val(k) / 4095 + 3) * (Picture1.Height / Screen.TwipsPerPixelY)
'p = 4 * ((4095 - CSng(k) - 1023) / 4095 * (Picture1.Height / Screen.TwipsPerPixelY))
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '****************************** ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
Picture1.Line (4, p)-(8, PrevP(0)), picture1color2 '在picture1上画线并设置颜色
PrevP(0) = p
'------------------------------------------------------------
End Sub
[解决办法]
参考如下代码,将画线代码分别放2个函数:
Private Sub Timer1_Timer()
If Check1.Value = vbChecked And Check2.Value = vbUnchecked Then
Call PicLine1
ElseIf Check2.Value = vbChecked And Check1.Value = vbUnchecked Then
Call PicLine2
ElseIf Check1.Value = vbChecked And Check2.Value = vbChecked Then
Call PicLine1
Call PicLine2
End If
End Sub
Private Sub Check1_Click()
If Check1.Value = vbChecked Then
Check1.Caption = "画A线 "
ElseIf Check1.Value = vbUnchecked Then
Check1.Caption = "不画A线 "
End If
End Sub
Private Sub Check2_Click()
If Check2.Value = vbChecked Then
Check2.Caption = "画B线 "
ElseIf Check2.Value = vbUnchecked Then
Check2.Caption = "不画B线 "
End If
End Sub
Public Sub PicLine1()
For j = 0 To 359
Picture1.Line (j * 30 + 500, record(0, j) + 3395)-(j * 30 + 502, record(0, j) + 3405), vbRed, BF
Picture1.Line (j * 30 + 500, record(1, j) + 3395)-(j * 30 + 502, record(1, j) + 3405), QBColor(7), BF
Picture1.Line (j * 30 + 500, record(2, j) + 3395)-(j * 30 + 502, record(2, j) + 3405), vbWhite, BF
Next j
End Sub
Public Sub PicLine2()
For j = 0 To 359
Picture1.Line (j * 30 + 500, record(3, j) + 3395)-(j * 30 + 502, record(3, j) + 3405), vbYellow, BF
Picture1.Line (j * 30 + 500, record(4, j) + 3395)-(j * 30 + 502, record(4, j) + 3405), vbGreen, BF
Picture1.Line (j * 30 + 500, record(5, j) + 3395)-(j * 30 + 502, record(5, j) + 3405), QBColor(10), BF
Next j
End Sub
