form1.vb

来自「苏金明编写的《用VB.NET和VC#.NET开发交互式CAD系统》一书的源代码」· VB 代码 · 共 84 行

VB
84
字号
Imports System.Drawing.Drawing2D

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

    Public Sub New()
        MyBase.New()

        '该调用是 Windows 窗体设计器所必需的。
        InitializeComponent()

        '在 InitializeComponent() 调用之后添加任何初始化

    End Sub

    '窗体重写处置以清理组件列表。
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Windows 窗体设计器所必需的
    Private components As System.ComponentModel.IContainer

    '注意:以下过程是 Windows 窗体设计器所必需的
    '可以使用 Windows 窗体设计器修改此过程。
    '不要使用代码编辑器修改它。
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        components = New System.ComponentModel.Container()
        Me.Text = "Form1"
    End Sub

#End Region

    Private lines As New ArrayList()

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        Dim g As Graphics = e.Graphics
        g.FillRectangle(Brushes.White, Me.ClientRectangle)
        Draw(g)
    End Sub

    Private Sub Draw(ByVal g As Graphics)
        Dim line1 As New CLine(New PointF(10, 10), New PointF(500, 400))
        Dim line2 As New CLine(New PointF(20, 300), New PointF(400, 50))
        line1.Draw(g, Pens.Red)
        line2.Draw(g, Pens.Blue)
        Dim intersec As Single() = LineLine(line1, line2)
        Dim newP As New PointF(intersec(1), intersec(2))

        Dim line3 As New CLine(line1.LBegin, newP)
        Dim line4 As New CLine(newP, line1.LEnd)
        Dim line5 As New CLine(line2.LBegin, newP)
        Dim line6 As New CLine(newP, line2.LEnd)

        lines.Add(line3)
        lines.Add(line4)
        lines.Add(line5)
        lines.Add(line6)
    End Sub

    Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
        Dim g As Graphics = Me.CreateGraphics
        Dim gp As New GraphicsPath()
        Dim pen1 As New Pen(Color.White)
        Dim pen As New Pen(Color.Green)
        pen.DashStyle = DashStyle.DashDot
        Dim i As Integer
        For i = 0 To lines.Count - 1
            If lines(i).Pick(New Point(e.X, e.Y)) Then
                lines(i).Draw(g, pen1)
                lines(i).Draw(g, pen)
            End If
        Next
    End Sub

End Class

⌨️ 快捷键说明

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