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

📄 formmain.vb

📁 Visual Basic.net 实例入门
💻 VB
📖 第 1 页 / 共 5 页
字号:
                    '如果上次画的是曲线,则擦掉上次所画的开放曲线
                ElseIf UBound(p) = 0 Then
                    g.DrawLine(pn2, p(UBound(p)).X, p(UBound(p)).Y, p(UBound(p)).X + 1, p(UBound(p)).Y)
                    '如果数组p中只有一个点坐标,则擦掉上次所画的点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn2, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则擦掉上次所画的直线
                End If

                Dim pn As Pen = New Pen(lbColor.BackColor)
                ReDim Preserve p(UBound(p) + 1)
                '重定义动态数组p,用以依次记录各点坐标
                p(UBound(p)) = p2
                '保存当前坐标
                If UBound(p) = 0 Then
                    g.DrawLine(pn, p2.X, p2.Y, p2.X + 1, p2.Y)
                    '如果数组p中只有一个点坐标,则在该坐标处画点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则将这两个坐标连成直线
                Else
                    g.DrawCurve(pn, p)
                    '如果数组p中已经有两个以上的点坐标,则以数组p中的点为基准画开放曲线
                End If

            Case 11
                Dim pn2 As Pen = New Pen(Color.White)
                '定义白色画笔作为擦除上次所画曲线的橡皮擦
                If UBound(p) > 1 Then
                    g.DrawClosedCurve(pn2, p)
                    '如果上次画的是曲线,则擦掉上次所画的封闭曲线
                ElseIf UBound(p) = 0 Then
                    g.DrawLine(pn2, p(UBound(p)).X, p(UBound(p)).Y, p(UBound(p)).X + 1, p(UBound(p)).Y)
                    '如果数组p中只有一个点坐标,则擦掉上次所画的点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn2, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则擦掉上次所画的直线
                End If

                Dim pn As Pen = New Pen(lbColor.BackColor)
                ReDim Preserve p(UBound(p) + 1)
                '重定义动态数组p,用以依次记录各点坐标
                p(UBound(p)) = p2
                '保存当前坐标
                If UBound(p) = 0 Then
                    g.DrawLine(pn, p2.X, p2.Y, p2.X + 1, p2.Y)
                    '如果数组p中只有一个点坐标,则在该坐标处画点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则将这两个坐标连成直线
                Else
                    g.DrawClosedCurve(pn, p)
                    '如果数组p中已经有两个以上的点坐标,则以数组p中的点为基准画封闭曲线
                End If

            Case 12
                Dim pn2 As Pen = New Pen(Color.White)
                If UBound(p) > 1 Then
                    Dim br As SolidBrush = New SolidBrush(Color.White)
                    g.FillClosedCurve(br, p)
                    '如果上次画的是曲线,则擦掉上次所画的实心封闭曲线
                ElseIf UBound(p) = 0 Then
                    g.DrawLine(pn2, p(UBound(p)).X, p(UBound(p)).Y, p(UBound(p)).X + 1, p(UBound(p)).Y)
                    '如果数组p中只有一个点坐标,则擦掉上次所画的点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn2, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则擦掉上次所画的直线
                End If

                Dim pn As Pen = New Pen(lbColor.BackColor)
                ReDim Preserve p(UBound(p) + 1)
                '重定义动态数组p,用以依次记录各点坐标
                p(UBound(p)) = p2
                '保存当前坐标

                If UBound(p) = 0 Then
                    g.DrawLine(pn, p2.X, p2.Y, p2.X + 1, p2.Y)
                    '如果数组p中只有一个点坐标,则在该坐标处画点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则将这两个坐标连成直线
                Else
                    Dim br As SolidBrush = New SolidBrush(lbColor.BackColor)
                    g.FillClosedCurve(br, p)
                    '如果数组p中已经有两个以上的点坐标,则以数组p中的点为基准画实心封闭曲线
                End If

            Case 13
                Dim pn2 As Pen = New Pen(Color.White)
                If UBound(p) > 1 Then
                    Dim br As SolidBrush = New SolidBrush(Color.White)
                    g.FillClosedCurve(br, p)
                    '如果上次画的是曲线,则擦掉上次所画的实心封闭曲线
                ElseIf UBound(p) = 0 Then
                    g.DrawLine(pn2, p(UBound(p)).X, p(UBound(p)).Y, p(UBound(p)).X + 1, p(UBound(p)).Y)
                    '如果数组p中只有一个点坐标,则擦掉上次所画的点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn2, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则擦掉上次所画的直线
                End If

                Dim pn As Pen = New Pen(lbColor.BackColor)
                ReDim Preserve p(UBound(p) + 1)
                '重定义动态数组p,用以依次记录各点坐标
                p(UBound(p)) = p2
                '保存当前坐标

                If UBound(p) = 0 Then
                    g.DrawLine(pn, p2.X, p2.Y, p2.X + 1, p2.Y)
                    '如果数组p中只有一个点坐标,则在该坐标处画点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则将这两个坐标连成直线
                Else
                    Dim iStyle As Integer
                    If cbStyle.Text = "" Then
                        iStyle = 0
                    Else
                        iStyle = cbStyle.Items.IndexOf(cbStyle.Text)
                    End If
                    Dim br As HatchBrush = New HatchBrush(iStyle, lbLineColor.BackColor, lbFillColor.BackColor)
                    g.FillClosedCurve(br, p)

                    '如果数组p中已经有两个以上的点坐标,则以数组p中的点为基准画指定填充风格的封闭曲线
                End If

            Case 14
                Dim pn2 As Pen = New Pen(Color.White)
                If UBound(p) = 0 Then
                    g.DrawLine(pn2, p(UBound(p)).X, p(UBound(p)).Y, p(UBound(p)).X + 1, p(UBound(p)).Y)
                    '如果数组p中只有一个点坐标,则擦掉上次所画的点
                End If

                Dim pn As Pen = New Pen(lbColor.BackColor)
                ReDim Preserve p(UBound(p) + 1)
                '重定义动态数组p,用以依次记录各点坐标
                p(UBound(p)) = p2
                '保存当前坐标

                If UBound(p) = 0 Then
                    g.DrawLine(pn, p2.X, p2.Y, p2.X + 1, p2.Y)
                    '如果数组p中只有一个点坐标,则在该坐标处画点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则将这两个坐标连成直线
                Else
                    g.DrawLines(pn, p)
                    '如果数组p中已经有两个以上的点坐标,则以数组p中的点为顶点画折线
                End If

            Case 15
                Dim pn2 As Pen = New Pen(Color.White)
                If UBound(p) = 0 Then
                    g.DrawLine(pn2, p(UBound(p)).X, p(UBound(p)).Y, p(UBound(p)).X + 1, p(UBound(p)).Y)
                    '如果数组p中只有一个点坐标,则擦掉上次所画的点
                ElseIf UBound(p) > 0 Then
                    g.DrawLine(pn2, p(UBound(p)).X, p(UBound(p)).Y, p(0).X, p(0).Y)
                    '如果数组p中有两个或两个以上点坐标,则擦掉上次封口的直线
                End If

                Dim pn As Pen = New Pen(lbColor.BackColor)
                ReDim Preserve p(UBound(p) + 1)
                '重定义动态数组p,用以依次记录各点坐标
                p(UBound(p)) = p2
                '保存当前坐标

                If UBound(p) = 0 Then
                    g.DrawLine(pn, p2.X, p2.Y, p2.X + 1, p2.Y)
                    '如果数组p中只有一个点坐标,则在该坐标处画点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则将这两个坐标连成直线
                Else
                    g.DrawPolygon(pn, p)
                    '如果数组p中已经有两个以上的点坐标,则以数组p中的点为顶点画多边形
                End If

            Case 16
                Dim pn2 As Pen = New Pen(Color.White)
                If UBound(p) > 1 Then
                    Dim br As SolidBrush = New SolidBrush(Color.White)
                    g.FillPolygon(br, p)
                    '如果上次画的是实心多边形,则擦掉上次所画的实心多边形
                ElseIf UBound(p) = 0 Then
                    g.DrawLine(pn2, p(UBound(p)).X, p(UBound(p)).Y, p(UBound(p)).X + 1, p(UBound(p)).Y)
                    '如果数组p中只有一个点坐标,则擦掉上次所画的点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn2, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则擦掉上次所画的直线
                End If

                Dim pn As Pen = New Pen(lbColor.BackColor)
                ReDim Preserve p(UBound(p) + 1)
                '重定义动态数组p,用以依次记录各点坐标
                p(UBound(p)) = p2
                '保存当前坐标

                If UBound(p) = 0 Then
                    g.DrawLine(pn, p2.X, p2.Y, p2.X + 1, p2.Y)
                    '如果数组p中只有一个点坐标,则在该坐标处画点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则将这两个坐标连成直线
                Else
                    Dim br As SolidBrush = New SolidBrush(lbColor.BackColor)
                    g.FillPolygon(br, p)
                    '如果数组p中已经有两个以上的点坐标,则以数组p中的点为顶点画实心多边形
                End If

            Case 17
                Dim pn2 As Pen = New Pen(Color.White)
                If UBound(p) > 1 Then
                    Dim br As SolidBrush = New SolidBrush(Color.White)
                    g.FillClosedCurve(br, p)
                    '如果上次画的是曲线,则擦掉上次所画的实心封闭曲线
                ElseIf UBound(p) = 0 Then
                    g.DrawLine(pn2, p(UBound(p)).X, p(UBound(p)).Y, p(UBound(p)).X + 1, p(UBound(p)).Y)
                    '如果数组p中只有一个点坐标,则擦掉上次所画的点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn2, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则擦掉上次所画的直线
                End If

                Dim pn As Pen = New Pen(lbColor.BackColor)
                ReDim Preserve p(UBound(p) + 1)
                '重定义动态数组p,用以依次记录各点坐标
                p(UBound(p)) = p2
                '保存当前坐标

                If UBound(p) = 0 Then
                    g.DrawLine(pn, p2.X, p2.Y, p2.X + 1, p2.Y)
                    '如果数组p中只有一个点坐标,则在该坐标处画点
                ElseIf UBound(p) = 1 Then
                    g.DrawLine(pn, p(UBound(p) - 1).X, p(UBound(p) - 1).Y, p(UBound(p)).X, p(UBound(p)).Y)
                    '如果数组p中有两个点坐标,则将这两个坐标连成直线
                Else
                    Dim iStyle As Integer
                    If cbStyle.Text = "" Then
                        iStyle = 0
                    Else
                        iStyle = cbStyle.Items.IndexOf(cbStyle.Text)
                    End If
                    Dim br As HatchBrush = New HatchBrush(iStyle, lbLineColor.BackColor, lbFillColor.BackColor)
                    g.FillPolygon(br, p)
                    '如果数组p中已经有两个以上的点坐标,则以数组p中的点为基准画指定填充风格的多边形
                End If
        End Select
    End Sub


    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        If e.Button = MouseButtons.Left Then
            Select Case iButton
                Case 0
                    Dim Pn1 As Pen = New Pen(lbColor.BackColor, iWidth)
                    p2.X = e.X
                    p2.Y = e.Y
                    '将终点的坐标赋给p2
                    g.DrawLine(Pn1, p1, p2)
                    '从p1到p2画线
                    p1 = p2
                    '把p2作为新的起点

                Case 1
                    Dim pn2 As Pen = New Pen(Color.White, iWidth)
                    p2.X = e.X
                    p2.Y = e.Y
                    '将终点的坐标赋给p2
                    g.DrawLine(pn2, p1, p2)
                    '从p1到p2画线
                    p1 = p2
                    '把p2作为新的起点

                Case 3
                    g.DrawIcon(icoPen, e.X, e.Y)
                    '画图标
            End Select
        End If
    End Sub

    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        Select Case iButton
            Case 0
                Dim pn As Pen = New Pen(lbColor.BackColor)
                g.DrawLine(pn, p1.X, p1.Y, p1.X + 1, p1.Y)
                '在原地画一个点
            Case 1
                Dim pn As Pen = New Pen(Color.White)
                g.DrawLine(pn, p1.X, p1.Y, p1.X + 1, p1.Y)
                '擦除该点颜色
            Case 3
                Dim pn As Pen = New Pen(lbColor.BackColor)
                g.DrawIcon(icoPen, p1.X, p1.Y)
                '在原地画一个图标
        End Select
    End Sub

    Private Sub 

⌨️ 快捷键说明

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