⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ccreatecircle.vb

📁 苏金明编写的《用VB.NET和VC#.NET开发交互式CAD系统》一书的源代码
💻 VB
字号:
'创建圆类
Public Class CCreateCircle
    Implements ICommand

    Private m_Step As Integer
    Private m_Center, m_pCircle 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
                m_pCircle = aPos
            Case 2
                '清除最后一次拖动时显示的橡皮线
                Dim tempLine As New CLine(m_Center, m_pCircle)
                tempLine.Draw(g, CGElement.geDrawMode.Drag)
                tempLine = Nothing

                '清除最后一次拖动时显示的橡皮圆
                Dim tempCircle As New CCircle(m_Center, m_pCircle)
                tempCircle.Draw(g, CGElement.geDrawMode.Normal)
                tempCircle = Nothing

                '绘当前位置的圆
                Dim newCircle As New CCircle(m_Center, aPos)
                newCircle.Draw(g, CGElement.geDrawMode.Normal)

                '图元个数加1,作为新建圆的ID号
                geNum += 1
                ges.Add(newCircle)

                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_pCircle
                curPos = aPos

                '清除上一条橡皮线
                Dim tempLine1 As New CLine(m_Center, prePos)
                tempLine1.Draw(g, CGElement.geDrawMode.Drag)
                tempLine1 = Nothing

                '清除上一个橡皮圆
                Dim tempCircle1 As New CCircle(m_Center, prePos)
                tempCircle1.Draw(g, CGElement.geDrawMode.Drag)
                tempCircle1 = Nothing

                '绘当前位置的橡皮线
                Dim tempLine2 As New CLine(m_Center, curPos)
                tempLine2.Draw(g, CGElement.geDrawMode.Drag)
                tempLine2 = Nothing

                '绘当前位置的橡皮圆
                Dim tempCircle2 As New CCircle(m_Center, curPos)
                tempCircle2.Draw(g, CGElement.geDrawMode.Drag)
                tempCircle2 = Nothing

                m_pCircle = curPos

        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_Center, m_pCircle)
            tempLine.Draw(g, CGElement.geDrawMode.Drag)
            tempLine = Nothing
            '清除橡皮圆
            Dim tempCircle As New CCircle(m_Center, m_pCircle)
            tempCircle.Draw(g, CGElement.geDrawMode.Drag)
            tempCircle = Nothing
        End If
        m_Step = 0
    End Sub

End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -