VB.Net/2D/Drag Draw

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

Scribble: drag and draw

<source lang="vbnet"> Imports System Imports System.Windows.Forms Imports System.Collections.Generic Imports System.ruponentModel Imports System.Drawing.Imaging Imports System.Drawing Public Class MainClass

  Shared Sub Main()
     Dim form1 As new Form1()
     Application.Run(form1)
  End Sub 

End Class

Public Class Form1

   Private m_Bitmap As Bitmap
   Private m_Graphics As Graphics
   Private m_Drawing As Boolean
   Private m_X As Integer
   Private m_Y As Integer
   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles MyBase.Load
       MakeNewBitmap()
   End Sub
   " Make a new blank image.
   Private Sub mnuFileClear_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles mnuFileClear.Click
       MakeNewBitmap()
   End Sub
   Private Sub MakeNewBitmap()
       Dim wid As Integer = picCanvas.ClientSize.Width
       Dim hgt As Integer = picCanvas.ClientSize.Height
       m_Bitmap = New Bitmap(wid, hgt)
       m_Graphics = Graphics.FromImage(m_Bitmap)
       m_Graphics.Clear(Me.BackColor)
       picCanvas.Image = m_Bitmap
   End Sub
   Private Sub picCanvas_MouseDown(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.MouseEventArgs) Handles picCanvas.MouseDown
       m_Drawing = True
       m_X = e.X
       m_Y = e.Y
   End Sub
   Private Sub picCanvas_MouseMove(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.MouseEventArgs) Handles picCanvas.MouseMove
       If Not m_Drawing Then Exit Sub
       m_Graphics.DrawLine(Pens.Red, m_X, m_Y, e.X, e.Y)
       m_X = e.X
       m_Y = e.Y
       picCanvas.Image = m_Bitmap
   End Sub
   Private Sub picCanvas_MouseUp(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.MouseEventArgs) Handles picCanvas.MouseUp
       m_Drawing = False
   End Sub

End Class

<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _ Partial Public Class Form1

   Inherits System.Windows.Forms.Form
   "Form overrides dispose to clean up the component list.
   <System.Diagnostics.DebuggerNonUserCode()> _
   Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing AndAlso components IsNot Nothing Then
           components.Dispose()
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "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()
       Me.picCanvas = New System.Windows.Forms.PictureBox
       Me.MenuStrip1 = New System.Windows.Forms.MenuStrip
       Me.mnuFile = New System.Windows.Forms.ToolStripMenuItem
       Me.mnuFileClear = New System.Windows.Forms.ToolStripMenuItem
       CType(Me.picCanvas, System.ruponentModel.ISupportInitialize).BeginInit()
       Me.MenuStrip1.SuspendLayout()
       Me.SuspendLayout()
       "
       "picCanvas
       "
       Me.picCanvas.Dock = System.Windows.Forms.DockStyle.Fill
       Me.picCanvas.Location = New System.Drawing.Point(0, 24)
       Me.picCanvas.Name = "picCanvas"
       Me.picCanvas.Size = New System.Drawing.Size(303, 246)
       Me.picCanvas.TabIndex = 0
       Me.picCanvas.TabStop = False
       "
       "MenuStrip1
       "
       Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuFile})
       Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
       Me.MenuStrip1.Name = "MenuStrip1"
       Me.MenuStrip1.Size = New System.Drawing.Size(303, 24)
       Me.MenuStrip1.TabIndex = 1
       Me.MenuStrip1.Text = "MenuStrip1"
       "
       "mnuFile
       "
       Me.mnuFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuFileClear})
       Me.mnuFile.Name = "mnuFile"
       Me.mnuFile.Text = "&File"
       "
       "mnuFileClear
       "
       Me.mnuFileClear.Name = "mnuFileClear"
       Me.mnuFileClear.Text = "&Clear"
       "
       "Form1
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(303, 270)
       Me.Controls.Add(Me.picCanvas)
       Me.Controls.Add(Me.MenuStrip1)
       Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
       Me.MainMenuStrip = Me.MenuStrip1
       Me.Name = "Form1"
       Me.Text = "Scribble"
       CType(Me.picCanvas, System.ruponentModel.ISupportInitialize).EndInit()
       Me.MenuStrip1.ResumeLayout(False)
       Me.ResumeLayout(False)
       Me.PerformLayout()
   End Sub
   Friend WithEvents picCanvas As System.Windows.Forms.PictureBox
   Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip
   Friend WithEvents mnuFile As System.Windows.Forms.ToolStripMenuItem
   Friend WithEvents mnuFileClear As System.Windows.Forms.ToolStripMenuItem

End Class

      </source>