Mega Code Archive

 
Categories / VB.Net Tutorial / 2D Graphics
 

Draw curve with Tension setting

Imports System.Collections Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class DrawCurveTension    public Shared Sub Main         Application.Run(New Form1)    End Sub End class Public Class Form1     Private BendPoints As New Generic.List(Of Point)     Private Sub Form1_MouseClick(ByVal sender As Object,ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick         BendPoints.Add(New Point(e.X, e.Y))         Me.Refresh()     End Sub     Private Sub Form1_Paint(ByVal sender As Object, _           ByVal e As System.Windows.Forms.PaintEventArgs) _           Handles Me.Paint         Dim tension As Single         Dim canvas As Graphics         Dim scanPoint As Point         Const PointSize As Integer = 2         tension = TensionLevel.Value / TensionLevel.Maximum         LabelTension.Text = "Tension:  " & tension.ToString         canvas = e.Graphics         For Each scanPoint In BendPoints             canvas.FillEllipse(Brushes.Red,scanPoint.X - PointSize,scanPoint.Y - PointSize,PointSize * 2, PointSize * 2)         Next scanPoint         If (BendPoints.Count > 1) Then             canvas.DrawCurve(Pens.Black, BendPoints.ToArray, tension)         End If     End Sub     Private Sub TensionLevel_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) _           Handles TensionLevel.ValueChanged         Me.Refresh()     End Sub     Private Sub ActReset_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles ActReset.Click         BendPoints.Clear()         Me.Refresh()     End Sub End Class <Global.Microsoft.VisualBasic.CompilerServices.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.ComponentModel.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.LabelTension = New System.Windows.Forms.Label         Me.TensionLevel = New System.Windows.Forms.TrackBar         Me.ActReset = New System.Windows.Forms.Button         CType(Me.TensionLevel, System.ComponentModel.ISupportInitialize).BeginInit()         Me.SuspendLayout()         '         'LabelTension         '         Me.LabelTension.AutoSize = True         Me.LabelTension.Location = New System.Drawing.Point(24, 32)         Me.LabelTension.Name = "LabelTension"         Me.LabelTension.Size = New System.Drawing.Size(66, 13)         Me.LabelTension.TabIndex = 0         Me.LabelTension.Text = "Tension: 0.0"         '         'TensionLevel         '         Me.TensionLevel.Location = New System.Drawing.Point(136, 24)         Me.TensionLevel.Name = "TensionLevel"         Me.TensionLevel.Size = New System.Drawing.Size(224, 45)         Me.TensionLevel.TabIndex = 1         '         'ActReset         '         Me.ActReset.Location = New System.Drawing.Point(392, 24)         Me.ActReset.Name = "ActReset"         Me.ActReset.Size = New System.Drawing.Size(75, 23)         Me.ActReset.TabIndex = 2         Me.ActReset.Text = "Reset"         Me.ActReset.UseVisualStyleBackColor = True         '         'Form1         '         Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font         Me.ClientSize = New System.Drawing.Size(547, 264)         Me.Controls.Add(Me.ActReset)         Me.Controls.Add(Me.TensionLevel)         Me.Controls.Add(Me.LabelTension)         Me.Name = "Form1"         Me.Text = "Drawing Cardinal Splines"         CType(Me.TensionLevel, System.ComponentModel.ISupportInitialize).EndInit()         Me.ResumeLayout(False)         Me.PerformLayout()     End Sub     Friend WithEvents LabelTension As System.Windows.Forms.Label     Friend WithEvents TensionLevel As System.Windows.Forms.TrackBar     Friend WithEvents ActReset As System.Windows.Forms.Button End Class