VB.Net Tutorial/2D Graphics/Shape
Содержание
Line Shape
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class DrawLineShape3
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 Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox Friend WithEvents Button1 As System.Windows.Forms.Button <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.PictureBox1 = New System.Windows.Forms.PictureBox Me.Button1 = New System.Windows.Forms.Button Me.SuspendLayout() " "PictureBox1 " Me.PictureBox1.BackColor = System.Drawing.SystemColors.Window Me.PictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D Me.PictureBox1.Dock = System.Windows.Forms.DockStyle.Top Me.PictureBox1.Location = New System.Drawing.Point(0, 0) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(488, 352) Me.PictureBox1.TabIndex = 0 Me.PictureBox1.TabStop = False " "Button1 " Me.Button1.Location = New System.Drawing.Point(8, 376) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(80, 24) Me.Button1.TabIndex = 1 Me.Button1.Text = "Draw" " Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(488, 430) Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.PictureBox1) Me.ResumeLayout(False) End Sub Dim pen1 As New System.Drawing.Pen(Color.Green, 1) Dim g As System.Drawing.Graphics Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click g = PictureBox1.CreateGraphics PictureBox1.Refresh() Dim x1, x2, y1, y2, r As Long r = 60 Const pi = 3.1415926 Dim x As Single Dim y As Double For x = 0 To 4 * pi Step pi / 120 y = r * (1 + 1 / 2 * Math.Cos(2.5 * x)) x1 = 200 + y * Math.Cos(x) y1 = 180 - y * Math.Sin(x) x2 = 200 + y * Math.Cos(x + pi / 6) y2 = 180 - y * Math.Sin(x + pi / 6) g.DrawLine(pen1, x1, y1, x2, y2) Next End Sub
End Class</source>
Line Shape: Diamond
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class DrawLineShape5
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 Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox Friend WithEvents Button1 As System.Windows.Forms.Button <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.PictureBox1 = New System.Windows.Forms.PictureBox Me.Button1 = New System.Windows.Forms.Button Me.SuspendLayout() " "PictureBox1 " Me.PictureBox1.BackColor = System.Drawing.SystemColors.Window Me.PictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D Me.PictureBox1.Dock = System.Windows.Forms.DockStyle.Top Me.PictureBox1.Location = New System.Drawing.Point(0, 0) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(488, 352) Me.PictureBox1.TabIndex = 0 Me.PictureBox1.TabStop = False " "Button1 " Me.Button1.Location = New System.Drawing.Point(8, 376) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(80, 24) Me.Button1.TabIndex = 1 Me.Button1.Text = "Draw" " Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(488, 430) Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.PictureBox1) Me.ResumeLayout(False) End Sub Dim pen1 As New System.Drawing.Pen(Color.Green, 1) Dim g As System.Drawing.Graphics Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click g = PictureBox1.CreateGraphics PictureBox1.Refresh() Dim x(60), y(60) As Single Dim i, j, k As Short Dim theta As Single Dim t As Single = 100 Const pi = 3.1415926 k = 15 theta = 2 * pi / k For i = 0 To k x(i) = t * Math.Cos(theta * (i + 1)) + 200 y(i) = 200 - t * Math.Sin(theta * (i + 1)) Next For i = 0 To k - 1 For j = i + 1 To k g.DrawLine(pen1, Int(x(i)), Int(y(i)), Int(x(j)), Int(y(j))) Next Next End Sub
End Class</source>
Line Shape: flower
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class DrawLineShape1
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 Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox Friend WithEvents Button1 As System.Windows.Forms.Button <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.PictureBox1 = New System.Windows.Forms.PictureBox Me.Button1 = New System.Windows.Forms.Button Me.SuspendLayout() " "PictureBox1 " Me.PictureBox1.BackColor = System.Drawing.SystemColors.Window Me.PictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D Me.PictureBox1.Dock = System.Windows.Forms.DockStyle.Top Me.PictureBox1.Location = New System.Drawing.Point(0, 0) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(488, 352) Me.PictureBox1.TabIndex = 0 Me.PictureBox1.TabStop = False " "Button1 " Me.Button1.Location = New System.Drawing.Point(8, 376) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(80, 24) Me.Button1.TabIndex = 1 Me.Button1.Text = "Draw" " Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(488, 430) Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.PictureBox1) Me.ResumeLayout(False) End Sub Dim pen1 As New System.Drawing.Pen(Color.Green, 1) Dim g As System.Drawing.Graphics Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click g = PictureBox1.CreateGraphics PictureBox1.Refresh() Dim x1, x2, y1, y2, r As Long Dim x As Single Dim y As Double Const pi = 3.1415926 r = 60 For x = 0 To 2 * pi Step pi / 360 y = r * (1 + Math.Sin(4 * x)) x1 = 200 + Int(y * Math.Cos(x)) y1 = 180 + Int(y * Math.Sin(x)) x2 = 200 + Int(y * Math.Cos(x + pi / 5)) y2 = 180 + Int(y * Math.Sin(x + pi / 5)) g.DrawLine(pen1, x1, y1, x2, y2) Next End Sub
End Class</source>
Line Shape Flower 6
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class DrawLineShape2
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 Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox Friend WithEvents Button1 As System.Windows.Forms.Button <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.PictureBox1 = New System.Windows.Forms.PictureBox Me.Button1 = New System.Windows.Forms.Button Me.SuspendLayout() " "PictureBox1 " Me.PictureBox1.BackColor = System.Drawing.SystemColors.Window Me.PictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D Me.PictureBox1.Dock = System.Windows.Forms.DockStyle.Top Me.PictureBox1.Location = New System.Drawing.Point(0, 0) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(488, 352) Me.PictureBox1.TabIndex = 0 Me.PictureBox1.TabStop = False " "Button1 " Me.Button1.Location = New System.Drawing.Point(8, 376) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(80, 24) Me.Button1.TabIndex = 1 Me.Button1.Text = "Draw" " Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(488, 430) Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.PictureBox1) Me.ResumeLayout(False) End Sub Dim pen1 As New System.Drawing.Pen(Color.Green, 1) Dim g As System.Drawing.Graphics Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click g = PictureBox1.CreateGraphics PictureBox1.Refresh() Dim x1, x2, y1, y2, r As Long Dim x As Single Dim y, z As Double Const pi = 3.1415926 r = 60 For x = 0 To 2 * pi Step pi / 360 y = r * (1 + 1 / 4 * Math.Cos(20 * x)) z = y * (1 + Math.Sin(4 * x)) x1 = 200 + Int(z * Math.Cos(x)) y1 = 180 + Int(z * Math.Sin(x)) x2 = 200 + Int(z * Math.Cos(x + pi / 5)) y2 = 180 + Int(z * Math.Sin(x + pi / 5)) g.DrawLine(pen1, x1, y1, x2, y2) Next End Sub
End Class</source>
Line Shape Mode
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class DrawLineShape4
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 Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox Friend WithEvents Button1 As System.Windows.Forms.Button <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.PictureBox1 = New System.Windows.Forms.PictureBox Me.Button1 = New System.Windows.Forms.Button Me.SuspendLayout() " "PictureBox1 " Me.PictureBox1.BackColor = System.Drawing.SystemColors.Window Me.PictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D Me.PictureBox1.Dock = System.Windows.Forms.DockStyle.Top Me.PictureBox1.Location = New System.Drawing.Point(0, 0) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(488, 352) Me.PictureBox1.TabIndex = 0 Me.PictureBox1.TabStop = False " "Button1 " Me.Button1.Location = New System.Drawing.Point(8, 376) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(80, 24) Me.Button1.TabIndex = 1 Me.Button1.Text = "Draw" " Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(488, 430) Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.PictureBox1) Me.ResumeLayout(False) End Sub Dim pen1 As New System.Drawing.Pen(Color.Green, 1) Dim g As System.Drawing.Graphics Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click g = PictureBox1.CreateGraphics PictureBox1.Refresh() Dim x1, x2, y1, y2, r As Long r = 60 Const pi = 3.1415926 Dim x As Single Dim y, z As Double For x = 0 To 4 * pi Step pi / 360 y = r * (1 + 1 / 4 * Math.Cos(2.5 * x)) z = y * (1 + Math.Sin(6 * x)) x1 = 200 + z * Math.Cos(x) y1 = 180 - z * Math.Sin(x) x2 = 200 + z * Math.Cos(x + pi / 6) y2 = 180 - z * Math.Sin(x + pi / 6) g.DrawLine(pen1, x1, y1, x2, y2) Next End Sub
End Class</source>