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

📄 ccreatearc.vb

📁 苏金明编写的《用VB.NET和VC#.NET开发交互式CAD系统》一书的源代码
💻 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 + -