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

📄 ccreateline.vb

📁 苏金明编写的《用VB.NET和VC#.NET开发交互式CAD系统》一书的源代码
💻 VB
字号:
'创建直线类
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -