>>The only difference is in the decimal places used in the path string.
Yes, because it is simply packed again by the renderer, the difference in decimal places is due to first creating LineSegment.
For instance for a triangle, we could have
<PathFigure IsClosed="True" StartPoint="10, 100">
Or, we could use the mini-language or markup syntax as
<PathGeometry Figures="M10,100 L100,100 L100,50Z"/>
If you set the OptimizePath=false, we could generate the first one if we want,
because the path is parsed into LineSegments.
The second one will actually create the StreamGeometry, which is the lightweight
equivalent to PathGeometry, optimized for minimal use of memory.
The <Path Data=""/> creates the Path object, which is a Shape, a higher level object, and that is
how it is used to create the StreamGeometry version of the path data. SharpVectors
currently creates only low level objects.
In XAML if you use the mini-language or markup syntax, you are actually creating the
StreamGeometry and this cannot be edited. StreamGeometry is a memory representation
and is not defined directly in XAML. This is my understand of it - let me know if I am missing