Exemplo n.º 1
0
        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);
 }
Exemplo n.º 8
0
        /// <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);
            }
        }
Exemplo n.º 9
0
        /// <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);
        }