加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vb.net graphic 简单的画图程序

发布时间:2020-12-17 08:16:11 所属栏目:百科 来源:网络整理
导读:Dim g As Graphics = Me.CreateGraphics 需要局部定义 每次实用 需要 定义--不能 定义成全局 Public Class Form1 Dim DrawState As Boolean Dim PreX As Single Dim PreY As Single Dim eP As New Pen(Color.Black,3) ' 构造黑色画笔,并将它赋给对象变量eP

Dim g As Graphics = Me.CreateGraphics

需要局部定义 每次实用需要定义--不能定义成全局

Public Class Form1
    Dim DrawState As Boolean
    Dim PreX As Single
    Dim PreY As Single
    Dim eP As New Pen(Color.Black,3)          ' 构造黑色画笔,并将它赋给对象变量eP
    'Dim g As Graphics = Me.CreateGraphics     ' 在窗体上构造一块画布,并将它赋给对象变量g

    Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load
        ' 将DrawState初始化为False,表示提笔
        DrawState = False
    End Sub

    Private Sub Form1_MouseDown(ByVal sender As Object,ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
        ' 当鼠标左键被按下时,把DrawState设为True,表示落笔开始画线
        Dim g As Graphics = Me.CreateGraphics
        If e.Button = Windows.Forms.MouseButtons.Left Then
            DrawState = True     ' 设置画图状态
            PreX = e.X          ' PreX和PreY保存了线条的起点。
            PreY = e.Y
        End If
        ' 当按住鼠标右键时,画一个直径为50的圆
        If e.Button = Windows.Forms.MouseButtons.Right Then
            g.DrawEllipse(eP,e.X - 25,e.Y - 25,100,100)
        End If
    End Sub

    Private Sub Form1_MouseMove(ByVal sender As Object,ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        ' 当鼠标移动时,如果处于画线状态,则在(PreX,PreY)与(X,Y)之间画一条直线
        Dim g As Graphics = Me.CreateGraphics
        If DrawState = True Then
            g.DrawLine(eP,PreX,PreY,e.X,e.Y)
            PreX = e.X
            PreY = e.Y
        End If

    End Sub

    Private Sub Form1_MouseUp(ByVal sender As Object,ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
        ' 当释放鼠标左键时,解除画线状态
        If e.Button = Windows.Forms.MouseButtons.Left Then
            DrawState = False
        End If
    End Sub
End Class

改法1

Public Class Form1
    Dim DrawState As Boolean
    Dim PreX As Single
    Dim PreY As Single
    Dim eP As New Pen(Color.Black,3)          ' 构造黑色画笔,并将它赋给对象变量eP
    Dim g As Graphics     ' 在窗体上构造一块画布,并将它赋给对象变量g

    Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
        ' 当鼠标左键被按下时,把DrawState设为True,表示落笔开始画线
        'Dim g As Graphics = Me.CreateGraphics
        If e.Button = Windows.Forms.MouseButtons.Left Then
            DrawState = True     ' 设置画图状态
            PreX = e.X          ' PreX和PreY保存了线条的起点。
            PreY = e.Y
        End If
        ' 当按住鼠标右键时,画一个直径为50的圆
        If e.Button = Windows.Forms.MouseButtons.Right Then
            g.DrawEllipse(eP,ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        ' 当鼠标移动时,如果处于画线状态,则在(PreX,PreY)与(X,Y)之间画一条直线
        'Dim g As Graphics = Me.CreateGraphics
        If DrawState = True Then
            g.DrawLine(eP,ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
        ' 当释放鼠标左键时,解除画线状态
        If e.Button = Windows.Forms.MouseButtons.Left Then
            DrawState = False
        End If
    End Sub


Private Sub Form1_Resize(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Resize
        g = Me.CreateGraphics
    End Sub
End Class


改法2

将声明定义到模块中

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读