ccreateline.vb
来自「苏金明编写的《用VB.NET和VC#.NET开发交互式CAD系统》一书的源代码」· VB 代码 · 共 70 行
VB
70 行
'创建直线类
Public Class CCreateLine
Implements ICommand
Private m_Step As Integer
Private m_Begin, m_End As PointF
Public Sub LButtonDown(ByVal g As Graphics, ByVal aPos As PointF) Implements ICommand.LButtonDown
Dim prePos As New PointF()
'记录鼠标左键的单击次数
m_Step += 1
Select Case m_Step
Case 1 '第1次单击鼠标左键
m_Begin = aPos
m_End = aPos
Case 2
'重绘并删除前一位置的直线段
prePos = m_Begin
Dim tempLine As New CLine(m_Begin, m_End)
tempLine.Draw(g, CGElement.geDrawMode.Drag)
tempLine = Nothing
'绘当前位置的直线段
m_Begin = prePos
m_End = aPos
Dim newLine As New CLine(m_Begin, m_End)
newLine.Draw(g, CGElement.geDrawMode.Normal)
ges.Add(newLine)
m_Step = 0
End Select
End Sub
Public Sub MouseMove(ByVal g As Graphics, ByVal aPos As PointF) Implements ICommand.MouseMove
Select Case m_Step
Case 1
Dim prePos As New PointF()
Dim curPos As New PointF()
prePos = m_End
curPos = aPos
'清除前一位置的直线段
Dim tempLine1 As New CLine(m_Begin, prePos)
tempLine1.Draw(g, CGElement.geDrawMode.Drag)
tempLine1 = Nothing
'绘当前位置的直线段
Dim tempLine2 As New CLine(m_Begin, curPos)
m_End = curPos
tempLine2.Draw(g, CGElement.geDrawMode.Drag)
tempLine2 = Nothing
End Select
End Sub
'单击鼠标右键时的绘图行为
Public Sub RButtonDown(ByVal g As Graphics, ByVal aPos As PointF) Implements ICommand.RButtonDown
If m_Step = 1 Then
'清除先前绘制的橡皮线
Dim tempLine As New CLine(m_Begin, m_End)
tempLine.Draw(g, CGElement.geDrawMode.Drag)
tempLine = Nothing
End If
m_Step = 0
End Sub
End Class
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?