#1,143 – Coordinate System for StreamGeometry

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
                return GetMyShapeGeometry();

        private Geometry GetMyShapeGeometry()
            StreamGeometry geom = new StreamGeometry();
            using (StreamGeometryContext ctx = geom.Open())
                    new Point(0.0, 0.0),
                    false,    // is NOT filled
                    false);   // is NOT closed
                    new Point(50.0, 50.0),
                    true,     // is stroked (line visible)
                    false);   // is not smoothly joined w/other segments
                    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.

        <loc:MyShape Canvas.Top="0" Canvas.Left="0"
                     Stroke="Black" />



About Sean
Software developer in the Twin Cities area, passionate about software development and sailing.

One Response to #1,143 – Coordinate System for StreamGeometry

  1. Pingback: Dew Drop – August 25, 2014 (#1841) | Morning Dew

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: