📄 ccreatearc.vb
字号:
'创建圆弧类
Public Class CCreateArc
Implements ICommand
Private m_Step As Integer
Private m_Center, m_Begin, m_End As PointF
Public Sub LButtonDown(ByVal g As Graphics, ByVal aPos As PointF) Implements ICommand.LButtonDown
'记录鼠标左键的单击次数
m_Step += 1
Select Case m_Step
Case 1 '第1次单击鼠标左键
m_Center = aPos
Case 2
m_Begin = aPos
m_End = aPos
Dim tempArc1 As New CArc(m_Center, aPos, aPos)
tempArc1.Draw(g, CGElement.geDrawMode.Drag)
tempArc1 = Nothing
Case 3
'清除最后一次拖动时圆心到起点的橡皮线
Dim tempLine1 As New CLine(m_Center, m_Begin)
tempLine1.Draw(g, CGElement.geDrawMode.Drag)
tempLine1 = Nothing
'清除最后一次拖动时圆心到终点的橡皮线
Dim tempLine2 As New CLine(m_Center, m_End)
tempLine2.Draw(g, CGElement.geDrawMode.Drag)
tempLine2 = Nothing
'清除最后一次拖动时显示的橡皮弧
Dim tempArc As New CArc(m_Center, m_Begin, m_End)
tempArc.Draw(g, CGElement.geDrawMode.Drag)
tempArc = Nothing
'绘当前位置的圆弧
Dim newArc As New CArc(m_Center, m_Begin, aPos)
newArc.Draw(g, CGElement.geDrawMode.Normal)
ges.Add(newArc)
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 2
Dim prePos As New PointF()
Dim curPos As New PointF()
prePos = m_End
curPos = aPos
'清除上一条圆心到终点的橡皮线
Dim tempLine1 As New CLine(m_Center, prePos)
tempLine1.Draw(g, CGElement.geDrawMode.Drag)
tempLine1 = Nothing
'清除上一个橡皮弧
Dim tempArc1 As New CArc(m_Center, m_Begin, prePos)
tempArc1.Draw(g, CGElement.geDrawMode.Drag)
tempArc1 = Nothing
'绘当前圆心到终点的橡皮线
Dim tempLine2 As New CLine(m_Center, curPos)
tempLine2.Draw(g, CGElement.geDrawMode.Drag)
tempLine2 = Nothing
'绘当前位置的橡皮弧
Dim tempArc2 As New CArc(m_Center, m_Begin, curPos)
tempArc2.Draw(g, CGElement.geDrawMode.Drag)
tempArc2 = Nothing
m_End = curPos
End Select
End Sub
'单击鼠标右键时的绘图行为
Public Sub RButtonDown(ByVal g As Graphics, ByVal aPos As PointF) Implements ICommand.RButtonDown
If m_Step = 2 Then
'清除圆心到起点的橡皮线
Dim tempLine1 As New CLine(m_Center, m_Begin)
tempLine1.Draw(g, CGElement.geDrawMode.Drag)
tempLine1 = Nothing
'清除圆心到终点的橡皮线
Dim tempLine2 As New CLine(m_Center, m_End)
tempLine2.Draw(g, CGElement.geDrawMode.Drag)
tempLine2 = Nothing
'清除橡皮弧
Dim tempArc As New CArc(m_Center, m_Begin, m_End)
tempArc.Draw(g, CGElement.geDrawMode.Drag)
tempArc = Nothing
End If
m_Step = 0
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -