If there is a line added to a Graphicspath with two ends location defined, is it possible to read this pair of points?
Point[] myArray =
{
new Point(30,30),
new Point(60,60),
};
GraphicsPath myPath2 = new GraphicsPath();
myPath2.AddLines(myArray2);
from myPath2, is there something similar to myPath2.Location
that can give me the points (30,30) and (60,60)?
Thanks
Yes it is possible via GraphicsPath.PathPoints
but you will need to understand the 2nd array of GraphicsPath.PathTypes
!
Only if all the points are added as a simple point array of line coordinates, maybe like this:
List<Point> points = new List<Point>();
.. // add some points!
GraphicsPath gp = new GraphicsPath();
gp.AddLines(points.ToArray());
will you be able to use/modify the points without much hassle.
If you add them via rounded shapes, like..
gp.AddEllipse(ClientRectangle);
..you will need to understand the various types! The same is true when you add them as other curves gp.AddCurves(points.ToArray());
If you add them as gp.AddRectangle(ClientRectangle);
you will get the regular points but with a byte type that says
0 - Indicates that the point is the start of a figure.
So in your case you get at the 1st of your points like this:
Console.WriteLine(gp.PathPoints[1].ToString());
Btw: There is no such thing as a GraphicsPath.Location
; but you may find GraphicsPath.GetBounds()
useful..
Note that all rounded shapes (including arcs and ellipses!) in fact consist only of bezier points:
3 - Indicates that the point is an endpoint or control point of a cubic Bézier spline
which means that the PathPoints
are alternating endpoints and control points.