public void AddAlignmentLines()
        {
            SvgGroupElement alinmentLinesGroup = new SvgGroupElement("AlignmentLines");

            alinmentLinesGroup.Style = s_AlignmentLineStyle;

            SvgLineElement line1 = new SvgLineElement(
                GetSvgLength(this.Origin.X), GetSvgLength(0),
                GetSvgLength(this.Origin.X), GetSvgLength(this.Page.Width));

            alinmentLinesGroup.AddChild(line1);

            SvgLineElement line2 = new SvgLineElement(
                GetSvgLength(0), GetSvgLength(this.Origin.Y),
                GetSvgLength(this.Page.Width), GetSvgLength(this.Origin.Y));

            alinmentLinesGroup.AddChild(line2);

            float             radius       = 65;
            SvgEllipseElement cutOutCircle = new SvgEllipseElement(
                GetSvgLength(this.Origin.X), GetSvgLength(this.Origin.Y),
                GetSvgLength(radius), GetSvgLength(radius));

            alinmentLinesGroup.AddChild(cutOutCircle);

            this.Root.AddChild(alinmentLinesGroup);
        }
        private IEnumerable <SvgStyledTransformedElement> GetAngleLines(double deltaAngleDegree, float innerRadius)
        {
            //float outerRadius = (float)Math.Sqrt(this.Page.Width * this.Page.Width + this.Page.Height * this.Page.Height);

            int halfCount = (int)(90 / deltaAngleDegree);

            for (int i = -halfCount; i <= halfCount; i++)
            {
                double angle         = (i * deltaAngleDegree) / 180.0 * Math.PI;
                PointF startingPoint = new PointF(
                    (float)(Math.Sin(angle) * innerRadius) + this.Origin.X,
                    (float)(Math.Cos(angle) * innerRadius) + this.Origin.Y);

                double outerRadius = GetOuterRadius(angle);
                PointF endPoint    = new PointF(
                    (float)(Math.Sin(angle) * outerRadius) + this.Origin.X,
                    (float)(Math.Cos(angle) * outerRadius) + this.Origin.Y);

                SvgLineElement lineElement = new SvgLineElement(
                    GetSvgLength(startingPoint.X), GetSvgLength(startingPoint.Y),
                    GetSvgLength(endPoint.X), GetSvgLength(endPoint.Y));

                yield return(lineElement);
            }
        }
 public override SvgPathSegList VisitLineElement(SvgLineElement element)
 {
     return(new SvgPathSegList
     {
         new SvgPathSegMovetoAbs(element.X1?.Value ?? 0, element.Y1?.Value ?? 0),
         new SvgPathSegLinetoAbs(element.X2?.Value ?? 0, element.Y2?.Value ?? 0)
     });
 }
        public static GraphicsPath CreatePath(SvgLineElement element)
        {
            GraphicsPath gp = new GraphicsPath();

            gp.AddLine((float)element.X1.AnimVal.Value, (float)element.Y1.AnimVal.Value,
                       (float)element.X2.AnimVal.Value, (float)element.Y2.AnimVal.Value);

            return(gp);
        }
        private IEnumerable <SvgStyledTransformedElement> GetHorizontalLines(float distance)
        {
            for (float y = this.Origin.Y; y < this.Page.Height; y += distance)
            {
                SvgLineElement lineElement = new SvgLineElement(
                    GetSvgLength(0), GetSvgLength(y),
                    GetSvgLength(this.Page.Width), GetSvgLength(y));

                yield return(lineElement);
            }
        }
        private void AddRays(SvgGroupElement group, float radius)
        {
            double[] angles = { 90, 150, 210, 270, 330, 30 };             //, 120, 180, 240, 300 };

            foreach (double angle in angles)
            {
                SvgLineElement rayElement = new SvgLineElement(
                    0, 0,
                    radius * (float)Math.Cos(angle * Math.PI / 180), radius * (float)Math.Sin(angle * Math.PI / 180));
                group.AddChild(rayElement);
            }
        }
Exemplo n.º 7
0
        private void AddGuideLines(SvgGroupElement group, float radius)
        {
            SvgLineElement verticalLineElement = new SvgLineElement(
                0, radius,
                0, -radius);

            group.AddChild(verticalLineElement);

            SvgLineElement horizontalLineElement = new SvgLineElement(
                -radius, 0,
                radius, 0);

            group.AddChild(horizontalLineElement);
        }
        private IEnumerable <SvgStyledTransformedElement> GetVerticalLines(float distance)
        {
            int halfCount = (int)((this.Page.Width - this.Origin.X) / distance);

            for (int i = -halfCount; i <= halfCount; i++)
            {
                float          x           = this.Origin.X + i * distance;
                SvgLineElement lineElement = new SvgLineElement(
                    GetSvgLength(x), GetSvgLength(0),
                    GetSvgLength(x), GetSvgLength(this.Page.Height));

                yield return(lineElement);
            }
        }
Exemplo n.º 9
0
        protected override void RenderLine(CanvasDrawingSession session, SvgLineElement element)
        {
            var x1 = this.LengthConverter.ConvertX(element.X1);
            var y1 = this.LengthConverter.ConvertY(element.Y1);
            var x2 = this.LengthConverter.ConvertX(element.X2);
            var y2 = this.LengthConverter.ConvertY(element.Y2);

            using (var t = TransformSession.CreateTransformSession(session, element.Transform.Result))
            {
                var area   = new Rect(Math.Min(x1, x2), Math.Min(y1, y2), Math.Abs(y2 - x1), Math.Abs(y2 - y1));
                var stroke = element.Style.Stroke;
                if (stroke != null && stroke.PaintType != SvgPaintType.None)
                {
                    var pen   = this.CreatePaint(session, area, stroke, element.Style.StrokeOpacity);
                    var width = element.Style.StrokeWidth;
                    session.DrawLine(x1, y1, x2, y2, pen, width.HasValue ? this.LengthConverter.Convert(width.Value) : 1.0F);
                }
            }
        }
        private void AddCenteredTriangle(SvgGroupElement group, float sideLength, float radius)
        {
            float middleLineLength = sideLength * (float)Math.Cos(30 / 180.0 * Math.PI);
            float centerToBase     = middleLineLength - radius;

            SvgLineElement sideLineElement1 = new SvgLineElement(
                -sideLength / 2f, -centerToBase,
                sideLength / 2f, -centerToBase);

            group.AddChild(sideLineElement1);

            SvgLineElement sideLineElement2 = new SvgLineElement(
                sideLength / 2f, -centerToBase,
                0, middleLineLength - centerToBase);

            group.AddChild(sideLineElement2);

            SvgLineElement sideLineElement3 = new SvgLineElement(
                0, middleLineLength - centerToBase,
                -sideLength / 2f, -centerToBase);

            group.AddChild(sideLineElement3);
        }
Exemplo n.º 11
0
 public virtual void VisitLineElement(SvgLineElement element)
 => DefaultVisit(element);
Exemplo n.º 12
0
 public Geometry CreateGeometry(SvgLineElement element)
 {
     return(new LineGeometry(new Point(Math.Round(element.X1.AnimVal.Value, 4),
                                       Math.Round(element.Y1.AnimVal.Value, 4)),
                             new Point(Math.Round(element.X2.AnimVal.Value, 4), Math.Round(element.Y2.AnimVal.Value, 4))));
 }
 public override void VisitLineElement(SvgLineElement element)
 => VisitPathSegList(element, element.ConvertToPathSegList());
Exemplo n.º 14
0
 public override void VisitLineElement(SvgLineElement element)
 {
     base.VisitLineElement(element);
     VisitSvgGeometryElement(element);
 }
Exemplo n.º 15
0
 protected abstract void RenderLine(TSession session, SvgLineElement element);