Mega Code Archive

 
Categories / VB.Net Tutorial / WPF
 

Creating Lines

<Window x: Class="WpfApplication1.PerpendicularLine"   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   Title="Perpendicular Line" Height="300" Width="400">   <Viewbox Stretch="Uniform">     <Canvas Name="canvas1" Grid.Column="1" Margin="10"       ClipToBounds="True" Width="270" Height="280">         <TextBlock Name="tbPoint1" Canvas.Top="10">           Point1         </TextBlock>         <TextBlock Name="tbPoint2" Canvas.Top="25">           Point2         </TextBlock>         <TextBlock Name="tbPoint3" Canvas.Top="40">           Point3         </TextBlock>         <TextBlock Name="tbPoint4" Canvas.Top="55">           Point4         </TextBlock>       </Canvas>   </Viewbox> </Window> //File:Window.xaml.vb Imports System Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Media Imports System.Windows.Shapes Namespace WpfApplication1   Public Partial Class PerpendicularLine     Inherits Window     Private line1 As Line     Private line2 As Line     Public Sub New()       InitializeComponent()       Dim rect As New Rectangle()       rect.Stroke = Brushes.Black       rect.Width = canvas1.Width       rect.Height = canvas1.Height       canvas1.Children.Add(rect)       line1 = New Line()       line2 = New Line()       AddLines()     End Sub     Private Sub AddLines()       Dim pt1 As New Point()       Dim pt2 As New Point()       pt1.X = 30       pt1.Y = 300       pt2.X = 100       pt2.Y = 500       Dim length As Double = 400       line1 = New Line()       line1.X1 = pt1.X       line1.Y1 = pt1.Y       line1.X2 = pt2.X       line1.Y2 = pt2.Y       line1.Stroke = Brushes.Gray       line1.StrokeThickness = 4       canvas1.Children.Add(line1)       Canvas.SetLeft(tbPoint1, pt1.X)       Canvas.SetTop(tbPoint1, pt1.Y)       Canvas.SetLeft(tbPoint2, pt2.X)       Canvas.SetTop(tbPoint2, pt2.Y)       tbPoint1.Text = "Pt1(" & pt1.ToString() & ")"       tbPoint2.Text = "Pt2(" & pt2.ToString() & ")"       Dim v1 As Vector = pt1 - pt2       Dim m1 As New Matrix()       Dim pt3 As New Point()       Dim pt4 As New Point()       m1.Rotate(-90)       v1.Normalize()       v1 *= length       line2 = New Line()       line2.Stroke = Brushes.Gray       line2.StrokeThickness = 4       line2.StrokeDashArray = DoubleCollection.Parse("3, 1")       pt3 = pt2 + v1 * m1       m1 = New Matrix()       m1.Rotate(90)       pt4 = pt2 + v1 * m1       line2.X1 = pt3.X       line2.Y1 = pt3.Y       line2.X2 = pt4.X       line2.Y2 = pt4.Y       canvas1.Children.Add(line2)       Canvas.SetLeft(tbPoint3, pt3.X)       Canvas.SetTop(tbPoint3, pt3.Y)       Canvas.SetLeft(tbPoint4, pt4.X)       Canvas.SetTop(tbPoint4, pt4.Y)       pt3.X = Math.Round(pt3.X, 0)       pt3.Y = Math.Round(pt3.Y, 0)       pt4.X = Math.Round(pt4.X, 0)       pt4.Y = Math.Round(pt4.Y, 0)       tbPoint3.Text = "Pt3(" & pt3.ToString() & ")"       tbPoint4.Text = "Pt4(" & pt4.ToString() & ")"     End Sub   End Class End Namespace