internal static void DrawRectGeometry(this StreamGeometryContext ctx, Int32Rect rect) { if (rect.IsEmpty == true) return; ctx.BeginFigure(new Point(rect.X, rect.Y), true, true); ctx.LineTo(new Point(rect.X, rect.Y + rect.Height), false, false); ctx.LineTo(new Point(rect.X + rect.Width, rect.Y + rect.Height), false, false); ctx.LineTo(new Point(rect.X + rect.Width, rect.Y), false, false); }
public static void AddPathFigure( this D2D.GeometrySink sink, Jupiter.Media.PathFigure pathFigure) { sink.BeginFigure( pathFigure.StartPoint.ToSharpDX(), pathFigure.IsFilled ? D2D.FigureBegin.Filled : D2D.FigureBegin.Hollow); foreach (var segment in pathFigure.Segments) { sink.AddPathFigureSegment(segment); } sink.EndFigure(pathFigure.IsClosed ? D2D.FigureEnd.Closed : D2D.FigureEnd.Open); }
public static void AddLineGeometry( this D2D.GeometrySink sink, Jupiter.Media.LineGeometry lineGeometry) { sink.BeginFigure( lineGeometry.StartPoint.ToSharpDX(), D2D.FigureBegin.Hollow); sink.AddLine( lineGeometry.EndPoint.ToSharpDX()); sink.EndFigure(D2D.FigureEnd.Open); }
public static void AddRectangleGeometry( this D2D.GeometrySink sink, Jupiter.Media.RectangleGeometry rectangleGeometry) { sink.BeginFigure( new DrawingPointF( (float)(rectangleGeometry.Rect.Left), (float)(rectangleGeometry.Rect.Top)), D2D.FigureBegin.Filled); sink.AddLines( new [] { new DrawingPointF( (float)(rectangleGeometry.Rect.Right), (float)(rectangleGeometry.Rect.Top)), new DrawingPointF( (float)(rectangleGeometry.Rect.Right), (float)(rectangleGeometry.Rect.Bottom)), new DrawingPointF( (float)(rectangleGeometry.Rect.Left), (float)(rectangleGeometry.Rect.Bottom)), }); sink.EndFigure(D2D.FigureEnd.Closed); }
public static void AddEllipseGeometry( this D2D.GeometrySink sink, Jupiter.Media.EllipseGeometry ellipseGeometry) { // Start the ellipse at 9 o'clock. sink.BeginFigure( new DrawingPointF( (float)(ellipseGeometry.Center.X - ellipseGeometry.RadiusX), (float)(ellipseGeometry.Center.Y)), D2D.FigureBegin.Filled); // Do almost full ellipse in one arc (there is .00001 pixel size missing) sink.AddArc( new D2D.ArcSegment { Point = new DrawingPointF( (float)(ellipseGeometry.Center.X - ellipseGeometry.RadiusX), (float)(ellipseGeometry.Center.Y + 0.00001)), Size = new DrawingSizeF( (float)(ellipseGeometry.RadiusX * 2), (float)(ellipseGeometry.RadiusY * 2)), RotationAngle = 0, SweepDirection = D2D.SweepDirection.Clockwise, ArcSize = D2D.ArcSize.Large }); // Close the ellipse sink.EndFigure(D2D.FigureEnd.Closed); }
public static void AddCircleFigure(this CanvasPathBuilder builder, Vector2 center, float radius) { builder.BeginFigure(center + Vector2.UnitX * radius); builder.AddArc(center, radius, radius, 0, (float)Math.PI * 2); builder.EndFigure(CanvasFigureLoop.Closed); }
public static void AddOneLineFigure(this CanvasPathBuilder builder, float x1, float y1, float x2, float y2) { builder.BeginFigure(x1, y1); builder.AddLine(x2, y2); builder.EndFigure(CanvasFigureLoop.Open); }
/// <summary> /// Adds a polygon to a <see cref="StreamGeometryContext"/>. /// </summary> /// <param name="streamGeometryContext">The <see cref="StreamGeometryContext"/>.</param> /// <param name="points">The points on the polygon.</param> /// <exception cref="ArgumentNullException"> /// <paramref name="streamGeometryContext"/> is <see langword="null"/>. /// </exception> public static void AddPolygon(this StreamGeometryContext streamGeometryContext, params Point[] points) { if (streamGeometryContext == null) throw new ArgumentNullException(nameof(streamGeometryContext)); if (points == null || points.Length <= 1) return; streamGeometryContext.BeginFigure(points[0], true, true); for (int i = 1; i < points.Length; i++) { streamGeometryContext.LineTo(points[i], true, false); } }
/// <summary> /// Adds a line to a <see cref="StreamGeometryContext"/>. /// </summary> /// <param name="streamGeometryContext">The <see cref="StreamGeometryContext"/>.</param> /// <param name="start">The start point of the line.</param> /// <param name="end">The end point of the line.</param> /// <exception cref="ArgumentNullException"> /// <paramref name="streamGeometryContext"/> is <see langword="null"/>. /// </exception> public static void AddLine(this StreamGeometryContext streamGeometryContext, Point start, Point end) { if (streamGeometryContext == null) throw new ArgumentNullException(nameof(streamGeometryContext)); streamGeometryContext.BeginFigure(start, false, false); streamGeometryContext.LineTo(end, true, false); }