VB.Net Tutorial/2D Graphics/Mouse Draw

Материал из VB Эксперт
Перейти к: навигация, поиск

Mouse drag and draw

<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class MouseDrawLine

  public Shared Sub Main
       Application.Run(New Form1)
  End Sub

End class Public Class Form1

   Inherits System.Windows.Forms.Form
   Public Sub New()
       MyBase.New()
       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
   Private components As System.ruponentModel.IContainer
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
       Me.ClientSize = New System.Drawing.Size(292, 266)
   End Sub
   Dim g As System.Drawing.Graphics
   Dim x1, y1, x2, y2 As Integer
   Dim pen1 As New System.Drawing.Pen(Color.Black)
   Dim mouseDown As Integer = 0
   Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
       mouseDown = 1
       x1 = e.X
       y1 = e.Y
   End Sub
   Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
       mouseDown = 0
   End Sub
   Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
       If mouseDown = 0 Then
           Exit Sub
       Else
           x2 = e.X
           y2 = e.Y
           g = Me.CreateGraphics
           g.DrawLine(pen1, x1, y1, x2, y2)
           x1 = x2
           y1 = y2
       End If
   End Sub

End Class</source>

Using the mouse to draw on a form

<source lang="vbnet">Imports System.Windows.Forms Imports System.Drawing Imports System.Drawing.Drawing2D public class MouseDrawForm

  public Shared Sub Main
       Application.Run(New FrmPainter)
  End Sub

End class Public Class FrmPainter

  Inherits System.Windows.Forms.Form
  Dim shouldPaint As Boolean = False
  1. Region " Windows Form Designer generated code "
  Public Sub New()
     MyBase.New()
     "This call is required by the Windows Form Designer.
     InitializeComponent()
     "Add any initialization after the InitializeComponent() call
  End Sub
  "Form overrides dispose to clean up the component list.
  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
  "Required by the Windows Form Designer
  Private components As System.ruponentModel.Container
  "NOTE: The following procedure is required by the Windows Form Designer
  "It can be modified using the Windows Form Designer.  
  "Do not modify it using the code editor.
  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
     "
     "Form1
     "
     Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
     Me.ClientSize = New System.Drawing.Size(292, 273)
     Me.Name = "Form1"
     Me.Text = "Painter"
  End Sub
  1. End Region
  Private Sub FrmPainter_MouseMove( _
     ByVal sender As System.Object, _
     ByVal e As System.Windows.Forms.MouseEventArgs) _
     Handles MyBase.MouseMove
     If shouldPaint Then
        Dim graphic As Graphics = CreateGraphics()
        graphic.FillEllipse(New SolidBrush(Color.Red), e.X, e.Y, 4, 4)
     End If
  End Sub
  
  Private Sub FrmPainter_MouseDown(ByVal sender As Object, _
     ByVal e As System.Windows.Forms.MouseEventArgs) _
     Handles MyBase.MouseDown
     shouldPaint = True
  End Sub 
  
  Private Sub FrmPainter_MouseUp(ByVal sender As Object, _
     ByVal e As System.Windows.Forms.MouseEventArgs) _
     Handles MyBase.MouseUp
     shouldPaint = False
  End Sub

End Class</source>