📄 ccreaterectangle.vb
字号:
Public Class CCreateRectangle
Implements ICommand
Private m_Step As Integer
Private m_basePos, m_desPos 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_basePos = aPos
m_desPos = aPos
Case 2
'重绘并删除前一位置的橡皮矩形
prePos = m_basePos
Dim tempRect As New CRectangle(m_basePos, m_desPos)
tempRect.Draw(g, CGElement.geDrawMode.Drag)
tempRect = Nothing
'绘当前位置的矩形
m_basePos = prePos
m_desPos = aPos
Dim newRect As New CRectangle(m_basePos, m_desPos)
newRect.Draw(g, CGElement.geDrawMode.Normal)
ges.Add(newRect)
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_desPos
curPos = aPos
'清除前一位置的橡皮矩形
Dim tempRect1 As New CRectangle(m_basePos, prePos)
tempRect1.Draw(g, CGElement.geDrawMode.Drag)
tempRect1 = Nothing
'绘当前位置的橡皮矩形
Dim tempRect2 As New CRectangle(m_basePos, curPos)
m_desPos = curPos
tempRect2.Draw(g, CGElement.geDrawMode.Drag)
tempRect2 = 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 tempRect As New CRectangle(m_basePos, m_desPos)
tempRect.Draw(g, CGElement.geDrawMode.Drag)
tempRect = Nothing
End If
m_Step = 0
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -