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

📄 drawmain.vb

📁 苏金明编写的《用VB.NET和VC#.NET开发交互式CAD系统》一书的源代码
💻 VB
📖 第 1 页 / 共 2 页
字号:
        Me.btnSelect.ToolTipText = "选择图元"
        '
        'btnDelete
        '
        Me.btnDelete.ImageIndex = 3
        Me.btnDelete.ToolTipText = "删除图元"
        '
        'ToolBarButton1
        '
        Me.ToolBarButton1.Style = System.Windows.Forms.ToolBarButtonStyle.Separator
        '
        'btnLine
        '
        Me.btnLine.ImageIndex = 4
        Me.btnLine.ToolTipText = "画直线段"
        '
        'btnCurve
        '
        Me.btnCurve.ToolTipText = "画曲线"
        '
        'btnRectangle
        '
        Me.btnRectangle.ImageIndex = 5
        Me.btnRectangle.ToolTipText = "画矩形"
        '
        'btnCircle
        '
        Me.btnCircle.ImageIndex = 6
        Me.btnCircle.ToolTipText = "画圆"
        '
        'btnArc
        '
        Me.btnArc.ImageIndex = 7
        Me.btnArc.ToolTipText = "画圆弧"
        '
        'btnText
        '
        Me.btnText.ImageIndex = 8
        Me.btnText.ToolTipText = "文本标注"
        '
        'ToolBarButton2
        '
        Me.ToolBarButton2.Style = System.Windows.Forms.ToolBarButtonStyle.Separator
        '
        'btnMove
        '
        Me.btnMove.ImageIndex = 9
        Me.btnMove.ToolTipText = "平移"
        '
        'btnRotate
        '
        Me.btnRotate.ImageIndex = 10
        Me.btnRotate.ToolTipText = "旋转"
        '
        'btnMirror
        '
        Me.btnMirror.ImageIndex = 11
        Me.btnMirror.ToolTipText = "镜像"
        '
        'btnZoomIn
        '
        Me.btnZoomIn.ImageIndex = 12
        Me.btnZoomIn.ToolTipText = "比例放大"
        '
        'btnZoomOut
        '
        Me.btnZoomOut.ImageIndex = 13
        Me.btnZoomOut.ToolTipText = "比例缩小"
        '
        'ToolBarButton3
        '
        Me.ToolBarButton3.Style = System.Windows.Forms.ToolBarButtonStyle.Separator
        '
        'btnHelp
        '
        Me.btnHelp.ToolTipText = "关于"
        '
        'ImageList1
        '
        Me.ImageList1.ImageSize = New System.Drawing.Size(16, 16)
        Me.ImageList1.ImageStream = CType(resources.GetObject("ImageList1.ImageStream"), System.Windows.Forms.ImageListStreamer)
        Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
        Me.BackColor = System.Drawing.Color.White
        Me.ClientSize = New System.Drawing.Size(552, 385)
        Me.Controls.Add(Me.ToolBar1)
        Me.Controls.Add(Me.StatusBar1)
        Me.Menu = Me.MainMenu1
        Me.Name = "Form1"
        Me.Text = "NET_CAD"
        Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
        CType(Me.Panel1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub

#End Region


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim g As Graphics = Me.CreateGraphics()
        g.FillRectangle(Brushes.White, Me.ClientRectangle)

        Dim spForm As New Splash()
        spForm.ShowDialog(Me)

        g.PageUnit = GraphicsUnit.Pixel

        '相对于X轴进行镜像变换
        Dim mat As New Matrix(1, 0, 0, -1, 0, 0)
        g.Transform = mat
        Dim rect As Rectangle = Me.ClientRectangle
        Dim w As Integer = rect.Width
        Dim h As Integer = rect.Height
        viewDX = rect.Width / 2
        viewDY = rect.Height / 2
        Dim pLT As New PointF()
        Dim pRB As New PointF()
        With pLT
            .X = rect.Left
            .Y = rect.Top
        End With
        With pRB
            .X = rect.Right
            .Y = rect.Bottom
        End With
        viewLT = PagetoWorld(pLT)
        viewRB = PagetoWorld(pRB)

        Coordinate(g)

        aCommand = creLine
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
        Dim g As Graphics = e.Graphics
        DrawAll(g)
        DrawSel(g)
    End Sub

    Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
        Dim g As Graphics = Me.CreateGraphics()
        Dim aPos As PointF = PagetoWorld(New PointF(e.X, e.Y))
        If e.Button = MouseButtons.Left Then
            aCommand.LButtonDown(g, aPos)

        ElseIf e.Button = MouseButtons.Right Then
            aCommand.RButtonDown(g, aPos)
        End If
    End Sub

    Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
        Dim g As Graphics = Me.CreateGraphics()
        Dim aPos As PointF = PagetoWorld(New PointF(e.X, e.Y))
        StatusBar1.Panels.Item(0).Text = "X=" & Str(aPos.X) & ",  Y=" & Str(aPos.Y)
        aCommand.MouseMove(g, aPos)
    End Sub

    Private Sub mnuLine_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuLine.Click
        aCommand = creLine
    End Sub

    Private Sub mnuCircle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuCircle.Click
        aCommand = creCircle
    End Sub

    Private Sub mnuArc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuArc.Click
        aCommand = creArc
    End Sub

    Private Sub mnuText_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuText.Click
        aCommand = creText
    End Sub
    Private Sub mnuCurve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuCurve.Click
        aCommand = creCurve
    End Sub

    Private Sub mnuSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuSelect.Click
        aCommand = selected
    End Sub

    Private Sub mnuDesel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuDesel.Click
        Dim g As Graphics = Me.CreateGraphics
        Dim i As Integer
        For i = 0 To geSels.Count - 1
            geSels(i).Draw(g, geDrawMode.Normal)
        Next i
        geSels.RemoveRange(0, geSels.Count)
    End Sub

    Private Sub mnuDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuDelete.Click
        Dim g As Graphics = Me.CreateGraphics
        Dim i As Integer
        For i = 0 To geSels.Count - 1
            geSels(i).Draw(g, geDrawMode.Delete)
            ges.Remove(geSels(i))
        Next i
        geSels.RemoveRange(0, geSels.Count)
    End Sub


    Private Sub mnuTRotate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuTRotate.Click
        aCommand = transRotate
    End Sub

    Private Sub mnuTMirror_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuTMirror.Click
        aCommand = transMirror
    End Sub

    Private Sub mnuTZoomin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuTZoomout.Click
        Dim g As Graphics = Me.CreateGraphics()
        ScaleZoom(g, 1.2, 1.2)
    End Sub

    Private Sub mnuTZoomout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuTZoomin.Click
        Dim g As Graphics = Me.CreateGraphics()
        ScaleZoom(g, 0.8, 0.8)
    End Sub

    Private Sub mnuAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuAbout.Click
        Dim about As New About
        about.ShowDialog(Me)
    End Sub

    Private Sub mnuSelall_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuSelall.Click
        Dim g As Graphics = Me.CreateGraphics
        Dim i As Integer
        For i = 0 To ges.Count - 1
            geSels.Add(ges(i))
        Next
        DrawSel(g)
    End Sub

    Private Sub mnuTMove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuTMove.Click
        aCommand = transMove
    End Sub

    Private Sub mnuSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuSave.Click
        Dim dlg As New SaveFileDialog
        dlg.Filter = "CAD文件 (*.CAD)|*.CAD|所有文件 (*.*)|*.*"
        dlg.ShowDialog(Me)
        Dim FileName As String = dlg.FileName
        Dim stream As New FileStream(FileName, FileMode.Create)
        Dim binary As New BinaryFormatter
        binary.Serialize(stream, ges)
        stream.Close()
    End Sub

    Private Sub mnuOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuOpen.Click
        Dim g As Graphics = Me.CreateGraphics()
        Dim dlg As New OpenFileDialog
        dlg.Filter = "CAD文件 (*.CAD)|*.CAD|所有文件 (*.*)|*.*"
        dlg.ShowDialog(Me)
        Dim FileName As String = dlg.FileName
        Dim stream As New FileStream(FileName, FileMode.Open)
        Dim binary As New BinaryFormatter
        ges = CType(binary.Deserialize(stream), ArrayList)
        stream.Close()
        DrawAll(g)
    End Sub

    Private Sub mnuRect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuRect.Click
        aCommand = creRectangle
    End Sub

    Protected Overrides Sub Finalize()
        MyBase.Finalize()
    End Sub

    Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
        If e.Button Is btnOpen Then
            mnuOpen_Click(sender, e)
        ElseIf e.Button Is btnSave Then
            mnuSave_Click(sender, e)
        ElseIf e.Button Is btnSelect Then
            mnuSelect_Click(sender, e)
        ElseIf e.Button Is btnDelete Then
            mnuDelete_Click(sender, e)
        ElseIf e.Button Is btnLine Then
            mnuLine_Click(sender, e)
        ElseIf e.Button Is btnRectangle Then
            mnuRect_Click(sender, e)
        ElseIf e.Button Is btnCircle Then
            mnuCircle_Click(sender, e)
        ElseIf e.Button Is btnArc Then
            mnuArc_Click(sender, e)
        ElseIf e.Button Is btnText Then
            mnuText_Click(sender, e)
        ElseIf e.Button Is btnMove Then
            mnuTMove_Click(sender, e)
        ElseIf e.Button Is btnRotate Then
            mnuTRotate_Click(sender, e)
        ElseIf e.Button Is btnMirror Then
            mnuTMirror_Click(sender, e)
        ElseIf e.Button Is btnZoomIn Then
            mnuTZoomin_Click(sender, e)
        ElseIf e.Button Is btnZoomOut Then
            mnuTZoomout_Click(sender, e)
        ElseIf e.Button Is btnCurve Then
            mnuTCurve_Click(sender, e)
        ElseIf e.Button Is btnHelp Then
            mnuAbout_Click(sender, e)
        End If
    End Sub

End Class

⌨️ 快捷键说明

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