VB.Net Tutorial/GUI/Form Paint — различия между версиями

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

Текущая версия на 15:56, 26 мая 2010

Form Invalidate

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

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

End class Public Class Form1

   Private MouseX As Integer
   Private MouseY As Integer
   Dim rectangle1 As Rectangle = New Rectangle(15, 35, 80, 80)
   Private Sub Form1_MouseMove(ByVal sender As Object, _
         ByVal e As System.Windows.Forms.MouseEventArgs) _
         Handles Me.MouseMove
       MouseX = e.X
       MouseY = e.Y
       Me.Invalidate()
   End Sub
   Private Sub Form1_Paint(ByVal sender As Object, _
         ByVal e As System.Windows.Forms.PaintEventArgs) _
         Handles Me.Paint
         
         rectangle1.X = MouseX
         rectangle1.Y = MouseY
       Dim canvas As Graphics = e.Graphics  
       canvas.DrawRectangle(Pens.DarkRed, rectangle1)
   End Sub

End Class

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

   Inherits System.Windows.Forms.Form
   "Form overrides dispose to clean up the component list.
   <System.Diagnostics.DebuggerNonUserCode()> _
   Protected 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.SuspendLayout()
       "
       "Form1
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(469, 387)
       Me.Name = "Form1"
       Me.Text = "Redrawing by Invalidating"
       Me.ResumeLayout(False)
   End Sub

End Class</source>

Form Refresh is faster than the Form Invalidate

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

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

End class Public Class Form1

   Private MouseX As Integer
   Private MouseY As Integer
   Dim rectangle1 As Rectangle = New Rectangle(15, 35, 80, 80)
   Private Sub Form1_MouseMove(ByVal sender As Object, _
         ByVal e As System.Windows.Forms.MouseEventArgs) _
         Handles Me.MouseMove
       MouseX = e.X
       MouseY = e.Y
       Me.Invalidate()
   End Sub
   Private Sub Form1_Paint(ByVal sender As Object, _
         ByVal e As System.Windows.Forms.PaintEventArgs) _
         Handles Me.Paint
         
         rectangle1.X = MouseX
         rectangle1.Y = MouseY
       Dim canvas As Graphics = e.Graphics  
       canvas.DrawRectangle(Pens.DarkRed, rectangle1)
   End Sub

End Class

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

   Inherits System.Windows.Forms.Form
   "Form overrides dispose to clean up the component list.
   <System.Diagnostics.DebuggerNonUserCode()> _
   Protected 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.SuspendLayout()
       "
       "Form1
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(469, 387)
       Me.Name = "Form1"
       Me.Text = "Redrawing by Invalidating"
       Me.ResumeLayout(False)
   End Sub

End Class</source>

Redraw when Form resizing

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

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

End class Public Class Form1

   Private Sub Form1_Paint(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
       DrawGraphics(e.Graphics)
   End Sub
    
   Private Sub Form1_Resize(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.Resize
       DrawGraphics(Me.CreateGraphics())
   End Sub
   Private Sub DrawGraphics(ByVal gr As Graphics)
       gr.Clear(Me.BackColor)
       gr.DrawRectangle(Pens.Black, 0, 0, _
           Me.ClientSize.Width - 1, _
           Me.ClientSize.Height - 1)
   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.SuspendLayout()
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(292, 273)
       Me.Name = "Form1"
       Me.Text = "PaintResizeX"
       Me.ResumeLayout(False)
   End Sub

End Class</source>

Set Form.ResizeRedraw

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

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

End class Public Class Form1

   Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
       Me.ResizeRedraw = True
       Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
   End Sub
   Private Sub Form1_Paint(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
       e.Graphics.Clear(Me.BackColor)
       e.Graphics.DrawRectangle(Pens.Black, 0, 0, _
           Me.ClientSize.Width - 1, _
           Me.ClientSize.Height - 1)
       e.Graphics.DrawLine(Pens.Black, 0, 0, _
           Me.ClientSize.Width - 1, _
           Me.ClientSize.Height - 1)
       e.Graphics.DrawLine(Pens.Black, _
           Me.ClientSize.Width - 1, 0, _
           0, Me.ClientSize.Height - 1)
   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.SuspendLayout()
       "
       "Form1
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(292, 273)
       Me.Name = "Form1"
       Me.Text = "UseResizeRedraw"
       Me.ResumeLayout(False)
   End Sub

End Class</source>