📄 clsline.cls
字号:
End If
Else
mvarMidPoint(1).X = mvarRect(mvarBeginRect).EndPoint.X - 300
mvarMidPoint(1).Y = mvarRect(mvarBeginRect).EndPoint.Y
mvarMidPoint(2).Y = mvarMidPoint(1).Y
mvarMidPoint(3).Y = mvarMidPoint(1).Y
mvarMidPoint(2).X = (mvarMidPoint(1).X + mvarMidPoint(3).X) / 2
If mvarMidPointCount > 3 Then
mvarMidPoint(4).Y = (mvarMidPoint(3).Y + mvarMidPoint(5).Y) / 2
End If
End If
ElseIf mvarBeginRectPlace = "左" Then
If mvarMidPoint(1).X = mvarMidPoint(2).X Then
mvarMidPoint(1).Y = mvarRect(mvarBeginRect).EndPoint.Y
mvarMidPoint(1).X = mvarRect(mvarBeginRect).EndPoint.X + 300
mvarMidPoint(2).X = mvarMidPoint(1).X
mvarMidPoint(3).X = mvarMidPoint(1).X
mvarMidPoint(2).Y = (mvarMidPoint(1).Y + mvarMidPoint(3).Y) / 2
If mvarMidPointCount > 3 Then
mvarMidPoint(4).X = (mvarMidPoint(3).X + mvarMidPoint(5).X) / 2
End If
Else
mvarMidPoint(1).X = mvarRect(mvarBeginRect).EndPoint.X + 300
mvarMidPoint(1).Y = mvarRect(mvarBeginRect).EndPoint.Y
mvarMidPoint(2).Y = mvarMidPoint(1).Y
mvarMidPoint(3).Y = mvarMidPoint(1).Y
mvarMidPoint(2).X = (mvarMidPoint(1).X + mvarMidPoint(3).X) / 2
If mvarMidPointCount > 3 Then
mvarMidPoint(4).Y = (mvarMidPoint(3).Y + mvarMidPoint(5).Y) / 2
End If
End If
End If
End If
'处理结束节点
If mvarEndRect > 0 Then
If mvarEndPointPlace = "上" Then
If mvarMidPoint(mvarMidPointCount).X = mvarMidPoint(mvarMidPointCount - 1).X Then
mvarMidPoint(mvarMidPointCount).X = mvarRect(mvarEndRect).EndPoint.X
mvarMidPoint(mvarMidPointCount).Y = mvarRect(mvarEndRect).EndPoint.Y - 400
mvarMidPoint(mvarMidPointCount - 1).X = mvarMidPoint(mvarMidPointCount).X
mvarMidPoint(mvarMidPointCount - 2).X = mvarMidPoint(mvarMidPointCount).X
mvarMidPoint(mvarMidPointCount - 1).Y = (mvarMidPoint(mvarMidPointCount).Y + mvarMidPoint(mvarMidPointCount - 2).Y) / 2
If mvarMidPointCount > 3 Then
mvarMidPoint(mvarMidPointCount - 3).X = (mvarMidPoint(mvarMidPointCount - 2).X + mvarMidPoint(mvarMidPointCount - 4).X) / 2
End If
Else
mvarMidPoint(mvarMidPointCount).X = mvarRect(mvarEndRect).EndPoint.X
mvarMidPoint(mvarMidPointCount).Y = mvarRect(mvarEndRect).EndPoint.Y - 400
mvarMidPoint(mvarMidPointCount - 1).Y = mvarMidPoint(mvarMidPointCount).Y
mvarMidPoint(mvarMidPointCount - 2).Y = mvarMidPoint(mvarMidPointCount).Y
mvarMidPoint(mvarMidPointCount - 1).X = (mvarMidPoint(mvarMidPointCount).X + mvarMidPoint(mvarMidPointCount - 2).X) / 2
If mvarMidPointCount > 3 Then
mvarMidPoint(mvarMidPointCount - 3).Y = (mvarMidPoint(mvarMidPointCount - 2).Y + mvarMidPoint(mvarMidPointCount - 4).Y) / 2
End If
End If
ElseIf mvarEndPointPlace = "下" Then
If mvarMidPoint(mvarMidPointCount).X = mvarMidPoint(mvarMidPointCount - 1).X Then
mvarMidPoint(mvarMidPointCount).X = mvarRect(mvarEndRect).EndPoint.X
mvarMidPoint(mvarMidPointCount).Y = mvarRect(mvarEndRect).EndPoint.Y + 400
mvarMidPoint(mvarMidPointCount - 1).X = mvarMidPoint(mvarMidPointCount).X
mvarMidPoint(mvarMidPointCount - 2).X = mvarMidPoint(mvarMidPointCount).X
mvarMidPoint(mvarMidPointCount - 1).Y = (mvarMidPoint(mvarMidPointCount).Y + mvarMidPoint(mvarMidPointCount - 2).Y) / 2
If mvarMidPointCount > 3 Then
mvarMidPoint(mvarMidPointCount - 3).X = (mvarMidPoint(mvarMidPointCount - 2).X + mvarMidPoint(mvarMidPointCount - 4).X) / 2
End If
Else
mvarMidPoint(mvarMidPointCount).X = mvarRect(mvarEndRect).EndPoint.X
mvarMidPoint(mvarMidPointCount).Y = mvarRect(mvarEndRect).EndPoint.Y + 400
mvarMidPoint(mvarMidPointCount - 1).Y = mvarMidPoint(mvarMidPointCount).Y
mvarMidPoint(mvarMidPointCount - 2).Y = mvarMidPoint(mvarMidPointCount).Y
mvarMidPoint(mvarMidPointCount - 1).X = (mvarMidPoint(mvarMidPointCount).X + mvarMidPoint(mvarMidPointCount - 2).X) / 2
If mvarMidPointCount > 3 Then
mvarMidPoint(mvarMidPointCount - 3).Y = (mvarMidPoint(mvarMidPointCount - 2).Y + mvarMidPoint(mvarMidPointCount - 4).Y) / 2
End If
End If
ElseIf mvarEndPointPlace = "左" Then
If mvarMidPoint(mvarMidPointCount).X = mvarMidPoint(mvarMidPointCount - 1).X Then
mvarMidPoint(mvarMidPointCount).X = mvarRect(mvarEndRect).EndPoint.X - 300
mvarMidPoint(mvarMidPointCount).Y = mvarRect(mvarEndRect).EndPoint.Y
mvarMidPoint(mvarMidPointCount - 1).X = mvarMidPoint(mvarMidPointCount).X
mvarMidPoint(mvarMidPointCount - 2).X = mvarMidPoint(mvarMidPointCount).X
mvarMidPoint(mvarMidPointCount - 1).Y = (mvarMidPoint(mvarMidPointCount).Y + mvarMidPoint(mvarMidPointCount - 2).Y) / 2
If mvarMidPointCount > 3 Then
mvarMidPoint(mvarMidPointCount - 3).X = (mvarMidPoint(mvarMidPointCount - 2).X + mvarMidPoint(mvarMidPointCount - 4).X) / 2
End If
Else
mvarMidPoint(mvarMidPointCount).X = mvarRect(mvarEndRect).EndPoint.X - 300
mvarMidPoint(mvarMidPointCount).Y = mvarRect(mvarEndRect).EndPoint.Y
mvarMidPoint(mvarMidPointCount - 1).Y = mvarMidPoint(mvarMidPointCount).Y
mvarMidPoint(mvarMidPointCount - 2).Y = mvarMidPoint(mvarMidPointCount).Y
mvarMidPoint(mvarMidPointCount - 1).X = (mvarMidPoint(mvarMidPointCount).X + mvarMidPoint(mvarMidPointCount - 2).X) / 2
If mvarMidPointCount > 3 Then
mvarMidPoint(mvarMidPointCount - 3).Y = (mvarMidPoint(mvarMidPointCount - 2).Y + mvarMidPoint(mvarMidPointCount - 4).Y) / 2
End If
End If
ElseIf mvarEndPointPlace = "右" Then
If mvarMidPoint(mvarMidPointCount).X = mvarMidPoint(mvarMidPointCount - 1).X Then
mvarMidPoint(mvarMidPointCount).X = mvarRect(mvarEndRect).EndPoint.X + 300
mvarMidPoint(mvarMidPointCount).Y = mvarRect(mvarEndRect).EndPoint.Y
mvarMidPoint(mvarMidPointCount - 1).X = mvarMidPoint(mvarMidPointCount).X
mvarMidPoint(mvarMidPointCount - 2).X = mvarMidPoint(mvarMidPointCount).X
mvarMidPoint(mvarMidPointCount - 1).Y = (mvarMidPoint(mvarMidPointCount).Y + mvarMidPoint(mvarMidPointCount - 2).Y) / 2
If mvarMidPointCount > 3 Then
mvarMidPoint(mvarMidPointCount - 3).X = (mvarMidPoint(mvarMidPointCount - 2).X + mvarMidPoint(mvarMidPointCount - 4).X) / 2
End If
Else
mvarMidPoint(mvarMidPointCount).X = mvarRect(mvarEndRect).EndPoint.X + 300
mvarMidPoint(mvarMidPointCount).Y = mvarRect(mvarEndRect).EndPoint.Y
mvarMidPoint(mvarMidPointCount - 1).Y = mvarMidPoint(mvarMidPointCount).Y
mvarMidPoint(mvarMidPointCount - 2).Y = mvarMidPoint(mvarMidPointCount).Y
mvarMidPoint(mvarMidPointCount - 1).X = (mvarMidPoint(mvarMidPointCount).X + mvarMidPoint(mvarMidPointCount - 2).X) / 2
If mvarMidPointCount > 3 Then
mvarMidPoint(mvarMidPointCount - 3).Y = (mvarMidPoint(mvarMidPointCount - 2).Y + mvarMidPoint(mvarMidPointCount - 4).Y) / 2
End If
End If
End If
End If
End Sub
Public Sub MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
End Sub
Public Sub MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim MidPoint As POINTAPI
Dim EndPoint As POINTAPI
Dim i, j, k, strLong As Integer
EndPoint.X = X
EndPoint.Y = Y
mvarEndPoint = EndPoint
If mvarEndPoint.X = mvarBeginPoint.X Or mvarBeginPoint.Y = mvarEndPoint.Y Then
ReDim Preserve mvarMidPoint(3) '设置点的保存结构
mvarMidPointCount = 3
'============================1
mvarMidPoint(1) = mvarBeginPoint
'============================2
MidPoint.X = (mvarEndPoint.X + mvarBeginPoint.X) / 2
MidPoint.Y = (mvarEndPoint.Y + mvarBeginPoint.Y) / 2
mvarMidPoint(2) = MidPoint
'============================3
mvarMidPoint(3) = mvarEndPoint
Else
If Button = 50 Then
ReDim Preserve mvarMidPoint(7) '设置点的保存结构
mvarMidPointCount = 7
'============================1
mvarMidPoint(1) = mvarBeginPoint
'============================4
MidPoint.X = (mvarEndPoint.X + mvarBeginPoint.X) / 2
MidPoint.Y = (mvarEndPoint.Y + mvarBeginPoint.Y) / 2
mvarMidPoint(4) = MidPoint
'===========================3
MidPoint.X = mvarMidPoint(4).X
MidPoint.Y = mvarBeginPoint.Y
mvarMidPoint(3) = MidPoint
'============================5
MidPoint.X = mvarMidPoint(4).X
MidPoint.Y = mvarEndPoint.Y
mvarMidPoint(5) = MidPoint
'============================2
MidPoint.X = (mvarBeginPoint.X + mvarMidPoint(3).X) / 2
MidPoint.Y = mvarBeginPoint.Y
mvarMidPoint(2) = MidPoint
'============================6
MidPoint.X = (mvarEndPoint.X + mvarMidPoint(5).X) / 2
MidPoint.Y = mvarEndPoint.Y
mvarMidPoint(6) = MidPoint
'============================7
mvarMidPoint(7) = mvarEndPoint
ElseIf Button = 60 Then
ReDim Preserve mvarMidPoint(5) '设置点的保存结构
mvarMidPointCount = 5
'============================1
mvarMidPoint(1) = mvarBeginPoint
'===========================3
MidPoint.X = mvarBeginPoint.X
MidPoint.Y = mvarEndPoint.Y
mvarMidPoint(3) = MidPoint
'============================2
MidPoint.X = mvarBeginPoint.X
MidPoint.Y = (mvarBeginPoint.Y + mvarMidPoint(3).Y) / 2
mvarMidPoint(2) = MidPoint
'============================4
MidPoint.X = (mvarEndPoint.X + mvarMidPoint(3).X) / 2
MidPoint.Y = mvarEndPoint.Y
mvarMidPoint(4) = MidPoint
'============================5
mvarMidPoint(5) = mvarEndPoint
ElseIf Button = 70 Then
ReDim Preserve mvarMidPoint(5) '设置点的保存结构
mvarMidPointCount = 5
'============================1
mvarMidPoint(1) = mvarBeginPoint
'===========================3
MidPoint.X = mvarEndPoint.X
MidPoint.Y = mvarBeginPoint.Y
mvarMidPoint(3) = MidPoint
'============================2
MidPoint.X = (mvarBeginPoint.X + mvarMidPoint(3).X) / 2
MidPoint.Y = mvarBeginPoint.Y
mvarMidPoint(2) = MidPoint
'============================4
MidPoint.X = mvarEndPoint.X
MidPoint.Y = (mvarEndPoint.Y + mvarMidPoint(3).Y) / 2
mvarMidPoint(4) = MidPoint
'============================5
mvarMidPoint(5) = mvarEndPoint
Else
ReDim Preserve mvarMidPoint(7) '设置点的保存结构
mvarMidPointCount = 7
'============================1
mvarMidPoint(1) = mvarBeginPoint
'============================4
MidPoint.X = (mvarEndPoint.X + mvarBeginPoint.X) / 2
MidPoint.Y = (mvarEndPoint.Y + mvarBeginPoint.Y) / 2
mvarMidPoint(4) = MidPoint
'============================2
MidPoint.X = mvarBeginPoint.X
MidPoint.Y = (mvarEndPoint.Y - mvarBeginPoint.Y) / 4 + mvarBeginPoint.Y
mvarMidPoint(2) = MidPoint
'===========================3
MidPoint.X = mvarBeginPoint.X
MidPoint.Y = mvarMidPoint(4).Y
mvarMidPoint(3) = MidPoint
'============================5
MidPoint.X = mvarEndPoint.X
MidPoint.Y = mvarMidPoint(4).Y
mvarMidPoint(5) = MidPoint
'============================6
MidPoint.X = mvarEndPoint.X
MidPoint.Y = (mvarEndPoint.Y - mvarBeginPoint.Y) * 3 / 4 + mvarBeginPoint.Y
mvarMidPoint(6) = MidPoint
'============================7
mvarMidPoint(7) = mvarEndPoint
End If
'===========================画点
DrawPoint
mvarSetActiveFlag = True
'===========================画线
mvarDrawFrm.DrawMode = 13
mvarDrawFrm.DrawWidth = 1
mvarDrawFrm.DrawStyle = 0
mvarDrawFrm.FillStyle = 0
If mvarLineType = 4 Then '回退线
For i = 2 To mvarMidPointCount
mvarDrawFrm.Line (mvarMidPoint(i).X, mvarMidPoint(i).Y)-(mvarMidPoint(i - 1).X, mvarMidPoint(i - 1).Y), RGB(255, 0, 0)
Next i
ElseIf mvarLineType = 3 Then '直流线
For i = 2 To mvarMidPointCount
mvarDrawFrm.Line (mvarMidPoint(i).X, mvarMidPoint(i).Y)-(mvarMidPoint(i - 1).X, mvarMidPoint(i - 1).Y), RGB(0, 255, 0)
Next i
Else '分流线
For i = 2 To mvarMidPointCount
mvarDrawFrm.Line (mvarMidPoint(i).X, mvarMidPoint(i).Y)-(mvarMidPoint(i - 1).X, mvarMidPoint(i - 1).Y), RGB(0, 0, 255)
Next i
End If
i = (mvarMidPointCount + 1) / 2
k = Len(mvarLineName)
strLong = k
For j = 1 To k
If Asc(Mid(mvarLineName, j, 1)) < 0 Then
strLong = strLong + 1
End If
Next j
TextOut mvarDrawFrm.hdc, mvarMidPoint(i).X / 15 - strLong * 3, mvarMidPoint(i).Y / 15 - 5, mvarLineName, strLong
End If
End Sub
Public Function ExistState(X As Single, Y As Single) As Integer
Dim i As Integer
Dim X1, X2, Y1, Y2 As Single
ExistState = -1
For i = 1 To mvarMidPointCount '在点上
X1 = mvarMidPoint(i).X
Y1 = mvarMidPoint(i).Y
If X < X1 + 50 And X > X1 - 50 And Y < Y1 + 50 And Y > Y1 - 50 Then
ExistState = i
If mvarSetActiveFlag = False Then
DrawPoint
mvarSetActiveFlag = True
End If
Exit Function
End If
Next i
For i = 2 To mvarMidPointCount '在线上
X1 = mvarMidPoint(i - 1).X
Y1 = mvarMidPoint(i - 1).Y
X2 = mvarMidPoint(i).X
Y2 = mvarMidPoint(i).Y
If X1 = X2 Then
If X < X1 + 50 And X > X1 - 50 Then
If Y2 > Y1 Then
If Y < Y2 And Y > Y1 Then
ExistState = 0
If mvarSetActiveFlag = False Then
DrawPoint
mvarSetActiveFlag = True
End If
Exit Function
End If
Else
If Y < Y1 And Y > Y2 Then
ExistState = 0
If mvarSetActiveFlag = False Then
DrawPoint
mvarSetActiveFlag = True
End If
Exit Function
End If
End If
End If
ElseIf Y1 = Y2 Then
If Y < Y1 + 50 And Y > Y1 - 50 Then
If X2 > X1 Then
If X < X2 And X > X1 Then
ExistState = 0
If mvarSetActiveFlag = False Then
DrawPoint
mvarSetActiveFlag = True
End If
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -