Click to See Complete Forum and Search --> : Draw Line


Prajeesh07
March 5th, 2009, 02:44 AM
I want to draw a line.
I use this code


private void OnMouseDown(object Sender, MouseEventArgs Args)
{
StartPoint = Args.GetPosition(DrawingCanvas);
}

private void OnMouseMove(object Sender, MouseEventArgs Args)
{
if (Args.LeftButton == MouseButtonState.Pressed)
{
EndPoint = Args.GetPosition(DrawingCanvas);
DrawLine(StartPoint, EndPoint, DrawingCanvas);
}
}

private void DrawLine(Point From, Point To, Canvas TargetCanvas)
{
CurrentLine = new Line();
CurrentLine.StrokeEndLineCap = PenLineCap.Round;
CurrentLine.StrokeStartLineCap = PenLineCap.Round;
CurrentLine.Stroke = Brushes.Red;
CurrentLine.StrokeThickness = 2.0;
CurrentLine.X1 = From.X;
CurrentLine.Y1 = From.Y;
CurrentLine.X2 = To.X;
CurrentLine.Y2 = To.Y;
Canvas.SetLeft(TargetCanvas, From.X);
Canvas.SetTop(TargetCanvas, From.Y);
TargetCanvas.Children.Add(CurrentLine);
}

But the previous line is visible.
How can I avoid that??

Thanks & Regards

Prajeesh Prabhakar

gstercken
April 20th, 2009, 07:09 AM
But the previous line is visible.
How can I avoid that??Well, this is sort of obvious, since it's exactly what your code does: It creates a new Line object on every MouseMove event. I guess what you intended is to create the new line in your MouseDown handler, and change only its end point when the mouse is moved?