Parallel lines & rounded line
-
Hi ALL, I have a list of point coordinates (x,y) to draw a line. The line is curve. I need to draw 2 parallel line, at left and at right of this line. My scope is to draw a rounded line of intere line. Help me please, with example. Thanks.
Alex
Could you please make it clear what do you want to do?
AlexB47 wrote:
My scope is to draw a rounded line
Rounded line? Did you mean a Curve??
Anurag Gandhi. http://www.gandhisoft.com Life is a computer program and every one is the programmer of his own life.
-
Hi ALL, I have a list of point coordinates (x,y) to draw a line. The line is curve. I need to draw 2 parallel line, at left and at right of this line. My scope is to draw a rounded line of intere line. Help me please, with example. Thanks.
Alex
AlexB47 wrote:
The line is curve
Is it a curve or a straight line?
AlexB47 wrote:
My scope is to draw a rounded line of intere line
You mean circle? Graphics class has methods like
DrawLine
,DrawCurve
andDrawEllipse
. Read about them and you should be able to do this. Make sure you do your drawing in thePaint
event and usePaintEventArgs.Graphics
object to draw. Drawing the parallel lines should be simple: get the X coordinate of the "end" from where you need to draw the parallel line. Then with same X coordinate, just change the Y and draw the line. Choice of Y coordinate would depend on the length of the parallel line segment you need to draw.50-50-90 rule: Anytime I have a 50-50 chance of getting something right, there's a 90% probability I'll get it wrong...!!
-
AlexB47 wrote:
The line is curve
Is it a curve or a straight line?
AlexB47 wrote:
My scope is to draw a rounded line of intere line
You mean circle? Graphics class has methods like
DrawLine
,DrawCurve
andDrawEllipse
. Read about them and you should be able to do this. Make sure you do your drawing in thePaint
event and usePaintEventArgs.Graphics
object to draw. Drawing the parallel lines should be simple: get the X coordinate of the "end" from where you need to draw the parallel line. Then with same X coordinate, just change the Y and draw the line. Choice of Y coordinate would depend on the length of the parallel line segment you need to draw.50-50-90 rule: Anytime I have a 50-50 chance of getting something right, there's a 90% probability I'll get it wrong...!!
-
curved line. I have to build 2 parallel lines of a GPS track (so curved path). Building a sort of lane of the road. :)
Alex
That's tricky. You can only draw lines on the left and the right when the road runs north to south. With east to west, you'd need to draw them top and bottom. I think you're going to be need some trigonometry to do this. You could probably cheat by drawing a thick line and overlaying a thin line and let windows do the rounding of intersections. Are you in GDI or WPF?
Regards, Rob Philpott.
-
That's tricky. You can only draw lines on the left and the right when the road runs north to south. With east to west, you'd need to draw them top and bottom. I think you're going to be need some trigonometry to do this. You could probably cheat by drawing a thick line and overlaying a thin line and let windows do the rounding of intersections. Are you in GDI or WPF?
Regards, Rob Philpott.
-
Could you please make it clear what do you want to do?
AlexB47 wrote:
My scope is to draw a rounded line
Rounded line? Did you mean a Curve??
Anurag Gandhi. http://www.gandhisoft.com Life is a computer program and every one is the programmer of his own life.
-
Ok, using the 'hack' mentioned above, create a new windows forms application in visual studio, and add the following in form1.cs
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);GraphicsPath p = new GraphicsPath(FillMode.Alternate); p.AddLine(0, 0, 50, 50); p.AddLine(50, 50, 60, 50); p.AddLine(60, 50, 60, 60); p.AddLine(60, 60, 90, 130); Pen pen = new Pen(Brushes.Black, 10); Pen p2 = new Pen(Brushes.White, 4); e.Graphics.DrawPath(pen, p); e.Graphics.DrawPath(p2, p);
}
That's one approach...
Regards, Rob Philpott.
-
Ok, using the 'hack' mentioned above, create a new windows forms application in visual studio, and add the following in form1.cs
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);GraphicsPath p = new GraphicsPath(FillMode.Alternate); p.AddLine(0, 0, 50, 50); p.AddLine(50, 50, 60, 50); p.AddLine(60, 50, 60, 60); p.AddLine(60, 60, 90, 130); Pen pen = new Pen(Brushes.Black, 10); Pen p2 = new Pen(Brushes.White, 4); e.Graphics.DrawPath(pen, p); e.Graphics.DrawPath(p2, p);
}
That's one approach...
Regards, Rob Philpott.
yep. that is what I would try, intuitively I would use odd line widths though. :)
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that.
[The QA section does it automatically now, I hope we soon get it on regular forums as well]
-
Ok, using the 'hack' mentioned above, create a new windows forms application in visual studio, and add the following in form1.cs
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);GraphicsPath p = new GraphicsPath(FillMode.Alternate); p.AddLine(0, 0, 50, 50); p.AddLine(50, 50, 60, 50); p.AddLine(60, 50, 60, 60); p.AddLine(60, 60, 90, 130); Pen pen = new Pen(Brushes.Black, 10); Pen p2 = new Pen(Brushes.White, 4); e.Graphics.DrawPath(pen, p); e.Graphics.DrawPath(p2, p);
}
That's one approach...
Regards, Rob Philpott.
-
Ok, using the 'hack' mentioned above, create a new windows forms application in visual studio, and add the following in form1.cs
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);GraphicsPath p = new GraphicsPath(FillMode.Alternate); p.AddLine(0, 0, 50, 50); p.AddLine(50, 50, 60, 50); p.AddLine(60, 50, 60, 60); p.AddLine(60, 60, 90, 130); Pen pen = new Pen(Brushes.Black, 10); Pen p2 = new Pen(Brushes.White, 4); e.Graphics.DrawPath(pen, p); e.Graphics.DrawPath(p2, p);
}
That's one approach...
Regards, Rob Philpott.
-
Ok, using the 'hack' mentioned above, create a new windows forms application in visual studio, and add the following in form1.cs
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);GraphicsPath p = new GraphicsPath(FillMode.Alternate); p.AddLine(0, 0, 50, 50); p.AddLine(50, 50, 60, 50); p.AddLine(60, 50, 60, 60); p.AddLine(60, 60, 90, 130); Pen pen = new Pen(Brushes.Black, 10); Pen p2 = new Pen(Brushes.White, 4); e.Graphics.DrawPath(pen, p); e.Graphics.DrawPath(p2, p);
}
That's one approach...
Regards, Rob Philpott.
Hello, I have another problem. Is there a way to avoid that the circuit is redrawn below? I to draw the current point that moves, use the DrawEllipse function (current position). How can I avoid soiling the circuit with all subsequent drawEllipse? Thanks.
Alex