#1,143 – Coordinate System for StreamGeometry
August 25, 2014 1 Comment
You can use a StreamGeometry object, along with the StreamGeometryContext returned by its Open method, to draw simple geometric shapes.
When using the various methods of a StreamGeometryContext instance, you work with X and Y values. The coordinate system used has the upper left corner of the drawing region at (0,0), with X values increasing from left to right and Y values increasing from top to bottom.
Below, we have a custom shape that draws a line segment from (0,0) to (50,50) and then another line segment to (75,25).
public class MyShape : Shape { protected override Geometry DefiningGeometry { get { return GetMyShapeGeometry(); } } private Geometry GetMyShapeGeometry() { StreamGeometry geom = new StreamGeometry(); using (StreamGeometryContext ctx = geom.Open()) { ctx.BeginFigure( new Point(0.0, 0.0), false, // is NOT filled false); // is NOT closed ctx.LineTo( new Point(50.0, 50.0), true, // is stroked (line visible) false); // is not smoothly joined w/other segments ctx.LineTo( new Point(75.0, 25.0), true, // is stroked (line visible) false); // is not smoothly joined w/other segments } return geom; } }
We can then use this shape from XAML.
<Canvas> <loc:MyShape Canvas.Top="0" Canvas.Left="0" Stroke="Black" /> </Canvas>