private void AddCenteredCircle(SvgGroupElement group, float radius)
		{
			SvgEllipseElement circleElement = new SvgEllipseElement(
				0, 0,
				radius, radius);

			group.AddChild(circleElement);
		}
Exemplo n.º 2
0
        public static SvgEllipseElement CreateCircle(Point center, double radius, SvgStyle style)
        {
            SvgEllipseElement circleElement = new SvgEllipseElement(
                center.X, center.Y,
                radius, radius);

            if (style != null)
            {
                circleElement.Style = style;
            }
            return circleElement;
        }
		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);
		}
Exemplo n.º 4
0
		internal static SvgEllipseElement CreateCenteredCircle(double radius, SvgStyle style)
		{
			SvgEllipseElement circleElement = new SvgEllipseElement(
				0, 0,
				(float)radius, (float)radius);

			circleElement.Style = style;
			return circleElement;
		}
Exemplo n.º 5
0
 /// <summary>
 /// Implemented
 /// </summary>
 public void DrawEllipse(Pen pen, Single x, Single y, Single width, Single height)
 {
     SvgEllipseElement el = new SvgEllipseElement(x + width/2,y + height/2,width/2,height/2);
     el.Style = new SvgStyle(pen);
     if (!_transforms.Result.IsIdentity)
         el.Transform = new SvgTransformList(_transforms.Result.Clone());
     _cur.AddChild(el);
 }
Exemplo n.º 6
0
        private void DrawEndAnchor(LineCap lc, CustomLineCap clc, Color col, float w, PointF pt, float angle)
        {
            SvgStyledTransformedElement anchor=null;
            PointF[] points = null;

            switch(lc)
            {
                case LineCap.ArrowAnchor:
                    points = new PointF[3];
                    points[0] = new PointF(0, -w/2f);
                    points[1] = new PointF(-w, w);
                    points[2] = new PointF(w, w);
                    anchor = new SvgPolygonElement(points);
                    break;
                case LineCap.DiamondAnchor:
                    points = new PointF[4];
                    points[0] = new PointF(0, -w);
                    points[1] = new PointF(w, 0);
                    points[2] = new PointF(0, w);
                    points[3] = new PointF(-w, 0);
                    anchor = new SvgPolygonElement(points);
                    break;
                case LineCap.RoundAnchor:
                    anchor = new SvgEllipseElement(0, 0, w, w);
                    break;
                case LineCap.SquareAnchor:
                    float ww = (w/3)*2;
                    anchor = new SvgRectElement(0 - ww, 0 - ww, ww*2, ww*2);
                    break;
                case LineCap.Custom:
                    //not implemented!
                    return;

                default:
                    return;
            }

            anchor.Id += "_line_anchor";
            anchor.Style.Set("fill", new SvgColor(col));
            anchor.Style.Set("stroke", "none");

            Matrix rotation = new Matrix();
            rotation.Rotate((angle/(float)Math.PI)*180);
            Matrix translation = new Matrix();
            translation.Translate(pt.X, pt.Y);

            anchor.Transform  = new SvgTransformList(_transforms.Result.Clone());
            anchor.Transform.Add(translation);
            anchor.Transform.Add(rotation);
            _cur.AddChild(anchor);
        }
Exemplo n.º 7
0
        private void AddHatchBrushDetails(SvgPatternElement patty, SvgColor col, HatchStyle hs)
        {
            SvgStyledTransformedElement l1=null;
            SvgStyledTransformedElement l2 = null;
            SvgStyledTransformedElement l3 = null;
            SvgStyledTransformedElement l4 = null;

            switch(hs)
            {
                case HatchStyle.Cross:
                    l1 = new SvgLineElement(4,0,4,8);
                    l2 = new SvgLineElement(0,4,8,4);
                    break;

                case HatchStyle.BackwardDiagonal:
                    l1 = new SvgLineElement(8,0,0,8);
                    break;

                case HatchStyle.LightDownwardDiagonal:
                case HatchStyle.DarkDownwardDiagonal:
                    l1 = new SvgLineElement(4,0,8,4);
                    l2 = new SvgLineElement(0,4,4,8);
                    l3 = new SvgLineElement(0,0,8,8);
                    break;
                case HatchStyle.LightHorizontal:
                case HatchStyle.DarkHorizontal:
                    l1 = new SvgLineElement(0,2,8,2);
                    l2 = new SvgLineElement(0,6,8,6);
                    break;
                case HatchStyle.LightUpwardDiagonal:
                case HatchStyle.DarkUpwardDiagonal:
                    l1 = new SvgLineElement(0,4,4,0);
                    l2 = new SvgLineElement(4,8,8,4);
                    l3 = new SvgLineElement(0,8,8,0);
                    break;
                case HatchStyle.LightVertical:
                case HatchStyle.DarkVertical:
                    l1 = new SvgLineElement(2,0,2,8);
                    l2 = new SvgLineElement(6,0,6,8);
                    break;
                case HatchStyle.DashedDownwardDiagonal:
                    l1 = new SvgLineElement(0,0,4,4);
                    l2 = new SvgLineElement(4,0,8,4);
                    break;
                case HatchStyle.DashedHorizontal:
                    l1 = new SvgLineElement(0,2,4,2);
                    l2 = new SvgLineElement(4,6,8,6);
                    break;
                case HatchStyle.DashedUpwardDiagonal:
                    l1 = new SvgLineElement(4,0,0,4);
                    l2 = new SvgLineElement(8,0,4,4);
                    break;
                case HatchStyle.DashedVertical:
                    l1 = new SvgLineElement(2,0,2,4);
                    l2 = new SvgLineElement(6,4,6,8);
                    break;
                case HatchStyle.DiagonalBrick:
                    l1 = new SvgLineElement(0,8,8,0);
                    l2 = new SvgLineElement(0,0,4,4);
                    break;
                case HatchStyle.DiagonalCross:
                    l1 = new SvgLineElement(0,0,8,8);
                    l2 = new SvgLineElement(8,0,0,8);
                    break;
                case HatchStyle.Divot:
                    l1 = new SvgLineElement(2,2,4,4);
                    l2 = new SvgLineElement(4,4,2,6);
                    break;
                case HatchStyle.DottedDiamond:
                    l1 = new SvgLineElement(0,0,8,8);
                    l2 = new SvgLineElement(0,8,8,0);
                    break;
                case HatchStyle.DottedGrid:
                    l1 = new SvgLineElement(4,0,4,8);
                    l2 = new SvgLineElement(0,4,8,4);
                    break;
                case HatchStyle.ForwardDiagonal:
                    l1 = new SvgLineElement(0,0,8,8);
                    break;
                case HatchStyle.Horizontal:
                    l1 = new SvgLineElement(0,4,8,4);
                    break;
                case HatchStyle.HorizontalBrick:
                    l1 = new SvgLineElement(0,3,8,3);
                    l2 = new SvgLineElement(3,0,3,3);
                    l3 = new SvgLineElement(0,3,0,7);
                    l4 = new SvgLineElement(0,7,7,7);
                    break;
                case HatchStyle.LargeCheckerBoard:
                    l1 = new SvgRectElement(0,0,3f,3f);
                    l2 = new SvgRectElement(4,4,4,4f);
                    break;
                case HatchStyle.LargeConfetti:
                    l1 = new SvgRectElement(0,0,1,1);
                    l2 = new SvgRectElement(2,3,1,1);
                    l3 = new SvgRectElement(5,2,1,1);
                    l4 = new SvgRectElement(6,6,1,1);
                    break;
                case HatchStyle.NarrowHorizontal:
                    l1 = new SvgLineElement(0,1,8,1);
                    l2 = new SvgLineElement(0,3,8,3);
                    l3 = new SvgLineElement(0,5,8,5);
                    l4 = new SvgLineElement(0,7,8,7);
                    break;
                case HatchStyle.NarrowVertical:
                    l1 = new SvgLineElement(1,0,1,8);
                    l2 = new SvgLineElement(3,0,3,8);
                    l3 = new SvgLineElement(5,0,5,8);
                    l4 = new SvgLineElement(7,0,7,8);
                    break;
                case HatchStyle.OutlinedDiamond:
                    l1 = new SvgLineElement(0,0,8,8);
                    l2 = new SvgLineElement(8,0,0,8);
                    break;
                case HatchStyle.Plaid:
                    l1 = new SvgLineElement(0,0,8,0);
                    l2 = new SvgLineElement(0,3,8,3);
                    l3 = new SvgRectElement(0,4,3,3);
                    break;
                case HatchStyle.Shingle:
                    l1 = new SvgLineElement(0,2,2,0);
                    l2 = new SvgLineElement(2,0,7,5);
                    l3 = new SvgLineElement(0,3,3,7);
                    break;
                case HatchStyle.SmallCheckerBoard:
                    l1 = new SvgRectElement(0,0,1,1);
                    l2 = new SvgRectElement(4,4,1,1);
                    l3 = new SvgRectElement(4,0,1,1);
                    l4 = new SvgRectElement(0,4,1,1);
                    break;
                case HatchStyle.SmallConfetti:
                    l1 = new SvgLineElement(0,0,2,2);
                    l2 = new SvgLineElement(7,3,5,5);
                    l3 = new SvgLineElement(2,6,4,4);
                    break;
                case HatchStyle.SmallGrid:
                    l1 = new SvgLineElement(0,2,8,2);
                    l2 = new SvgLineElement(0,6,8,6);
                    l3 = new SvgLineElement(2,0,2,8);
                    l4 = new SvgLineElement(6,0,6,8);
                    break;
                case HatchStyle.SolidDiamond:
                    l1 = new SvgPolygonElement("3 0 6 3 3 6 0 3");
                    break;
                case HatchStyle.Sphere:
                    l1 = new SvgEllipseElement(3,3,2,2);
                    break;
                case HatchStyle.Trellis:
                    l1 = new SvgLineElement(0,1,8,1);
                    l2 = new SvgLineElement(0,3,8,3);
                    l3 = new SvgLineElement(0,5,8,5);
                    l4 = new SvgLineElement(0,7,8,7);
                    break;
                case HatchStyle.Vertical:
                    l4 = new SvgLineElement(0,0,0,8);
                    break;
                case HatchStyle.Wave:
                    l3 = new SvgLineElement(0,4,3,2);
                    l4 = new SvgLineElement(3,2,8,4);
                    break;
                case HatchStyle.Weave:
                    l1 = new SvgLineElement(0,4,4,0);
                    l2 = new SvgLineElement(8,4,4,8);
                    l3 = new SvgLineElement(0,0,0,4);
                    l4 = new SvgLineElement(0,4,4,8);
                    break;
                case HatchStyle.WideDownwardDiagonal:
                    l1 = new SvgLineElement(0,0,8,8);
                    l2 = new SvgLineElement(0,1,8,9);
                    l3 = new SvgLineElement(7,0,8,1);
                    break;
                case HatchStyle.WideUpwardDiagonal:
                    l1 = new SvgLineElement(8,0,0,8);
                    l2 = new SvgLineElement(8,1,0,9);
                    l3 = new SvgLineElement(0,1,-1,0);
                    break;
                case HatchStyle.ZigZag:
                    l1 = new SvgLineElement(0,4,4,0);
                    l2 = new SvgLineElement(4,0,8,4);
                    break;

                case HatchStyle.Percent05:
                    l1 = new SvgLineElement(0,0,1,0);
                    l2 = new SvgLineElement(4,4,5,4);
                    break;
                case HatchStyle.Percent10:
                    l1 = new SvgLineElement(0,0,1,0);
                    l2 = new SvgLineElement(4,2,5,2);
                    l3 = new SvgLineElement(2,4,3,4);
                    l4 = new SvgLineElement(6,6,7,6);
                    break;
                case HatchStyle.Percent20:
                    l1 = new SvgLineElement(0,0,2,0);
                    l2 = new SvgLineElement(4,2,6,2);
                    l3 = new SvgLineElement(2,4,4,4);
                    l4 = new SvgLineElement(5,6,7,6);
                    break;
                case HatchStyle.Percent25:
                    l1 = new SvgLineElement(0,0,3,0);
                    l2 = new SvgLineElement(4,2,6,2);
                    l3 = new SvgLineElement(2,4,5,4);
                    l4 = new SvgLineElement(5,6,7,6);
                    break;
                case HatchStyle.Percent30:
                    l1 = new SvgRectElement(0,0,3,1);
                    l2 = new SvgLineElement(4,2,6,2);
                    l3 = new SvgRectElement(2,4,3,1);
                    l4 = new SvgLineElement(5,6,7,6);
                    break;
                case HatchStyle.Percent40:
                    l1 = new SvgRectElement(0,0,3,1);
                    l2 = new SvgRectElement(4,2,3,1);
                    l3 = new SvgRectElement(2,4,3,1);
                    l4 = new SvgRectElement(5,6,3,1);
                    break;
                case HatchStyle.Percent50:
                    l1 = new SvgRectElement(0,0,3,3);
                    l2 = new SvgRectElement(4,4,4,4f);
                    break;
                case HatchStyle.Percent60:
                    l1 = new SvgRectElement(0,0,4,3);
                    l2 = new SvgRectElement(4,4,4,4f);
                    break;
                case HatchStyle.Percent70:
                    l1 = new SvgRectElement(0,0,4,5);
                    l2 = new SvgRectElement(4,4,4,4f);
                    break;
                case HatchStyle.Percent75:
                    l1 = new SvgRectElement(0,0,7,3);
                    l2 = new SvgRectElement(0,2,3,7);
                    break;
                case HatchStyle.Percent80:
                    l1 = new SvgRectElement(0,0,7,4);
                    l2 = new SvgRectElement(0,2,4,7);
                    break;
                case HatchStyle.Percent90:
                    l1 = new SvgRectElement(0,0,7,5);
                    l2 = new SvgRectElement(0,2,5,7);
                    break;

                default:

                    break;
            }

            if (l1 != null)
            {
                l1.Style.Set("stroke", col);
                l1.Style.Set("fill", col);
                patty.AddChild(l1);
            }
            if (l2 != null)
            {
                l2.Style.Set("stroke", col);
                l2.Style.Set("fill", col);
                patty.AddChild(l2);
            }
            if (l3 != null)
            {
                l3.Style.Set("stroke", col);
                l3.Style.Set("fill", col);
                patty.AddChild(l3);
            }
            if (l4 != null)
            {
                l4.Style.Set("stroke", col);
                l4.Style.Set("fill", col);
                patty.AddChild(l4);
            }
        }
Exemplo n.º 8
0
 /// <summary>
 /// Implemented
 /// </summary>
 public void FillEllipse(Brush brush, Single x, Single y, Single width, Single height)
 {
     SvgEllipseElement el = new SvgEllipseElement(x + width/2,y + height/2,width/2,height/2);
     el.Style = HandleBrush(brush);
     if (!_transforms.Result.IsIdentity)
         el.Transform = new SvgTransformList(_transforms.Result.Clone());
     _cur.AddChild(el);
 }
Exemplo n.º 9
0
        private void button2_Click(object sender, System.EventArgs e)
        {
            SvgSvgElement root = new SvgSvgElement("4in", "4in", "0,0 100,100");

            //adding multiple children

            root.AddChildren(
                new SvgRectElement(5,5,5,5),
                new SvgEllipseElement(30,10,8,12),
                new SvgTextElement("Textastic!", 3, 20)
                );

            //group and path

            SvgGroupElement grp = new SvgGroupElement("green_group");

            grp.Style = "fill:green;stroke:black;";

            SvgEllipseElement ell = new SvgEllipseElement();
            ell.CX = 50;
            ell.CY = 50;
            ell.RX = 10;
            ell.RY = 20;

            SvgPathElement pathy = new SvgPathElement();
            pathy.D = "M 20,80 C 20,90 30,80 70,100 C 70,100 40,60 50,60 z";
            pathy.Style = ell.Style;

            root.AddChild(grp);

            //cloning and style arithmetic

            grp.AddChildren(ell, pathy);

            grp.Style.Set("fill", "blue");

            SvgGroupElement grp2 = (SvgGroupElement)SvgFactory.CloneElement(grp);

            grp2.Id = "cloned_red_group";

            grp2.Style.Set("fill", "red");

            grp2.Style += "opacity:0.5";

            grp2.Transform = "scale (1.2, 1.2)  translate(10)";

            root.AddChild(grp2);

            //output

            string s = root.WriteSVGString(true);

            tbOut.Text = s;

            StreamWriter tw = new StreamWriter("c:\\temp\\foo.svg", false);

            tw.Write(s);

            tw.Close();

            svgOut.SRC = "c:\\temp\\foo.svg";
        }
		private IEnumerable<SvgStyledTransformedElement> GetCircles(float distance)
		{
			float maxRadius = (float)Math.Sqrt(this.Page.Width * this.Page.Width / 4 + (this.Page.Height - this.Origin.Y) * (this.Page.Height - this.Origin.Y));
			int count = (int)(maxRadius / distance);
			for (int i = 0; i <= count; i++)
			{
				float radius = i * distance;
				SvgEllipseElement circleElement = new SvgEllipseElement(
					GetSvgLength(this.Origin.X), GetSvgLength(this.Origin.Y),
					GetSvgLength(radius), GetSvgLength(radius));

				yield return circleElement;
			}
		}
Exemplo n.º 11
0
        private void DrawEndAnchor(LineCap lc, CustomLineCap clc, Color col, float w, PointF pt, float angle, bool ignoreUnsupportedLineCaps)
        {
            SvgStyledTransformedElement anchor = null;
            PointF[] points = null;

            switch (lc) {
                case LineCap.NoAnchor:
                    break;

                case LineCap.Flat:
                    // TODO: what is the correct look?
                    break;

                case LineCap.ArrowAnchor:
                    points = new PointF[3];
                    points[0] = new PointF(0, -w / 2f);
                    points[1] = new PointF(-w, w);
                    points[2] = new PointF(w, w);
                    anchor = new SvgPolygonElement(points);
                    break;

                case LineCap.DiamondAnchor:
                    points = new PointF[4];
                    points[0] = new PointF(0, -w);
                    points[1] = new PointF(w, 0);
                    points[2] = new PointF(0, w);
                    points[3] = new PointF(-w, 0);
                    anchor = new SvgPolygonElement(points);
                    break;

                case LineCap.RoundAnchor:
                    anchor = new SvgEllipseElement(0, 0, w, w);
                    break;

                case LineCap.SquareAnchor:
                    float ww = (w / 3) * 2;
                    anchor = new SvgRectElement(0 - ww, 0 - ww, ww * 2, ww * 2);
                    break;

                case LineCap.Custom:
                    if (clc != null)
                    {
                        if (!ignoreUnsupportedLineCaps)
                            throw new SvgGdiNotImpl("DrawEndAnchor custom");
                    }
                    break;

                default:
                    if (!ignoreUnsupportedLineCaps)
                        throw new SvgGdiNotImpl("DrawEndAnchor " + lc.ToString());
                    break;
            }

            if (anchor == null)
                return;

            anchor.Id += "_line_anchor";
            anchor.Style.Set("fill", new SvgColor(col));
            anchor.Style.Set("stroke", "none");

            Matrix rotation = new Matrix();
            rotation.Rotate((angle / (float)Math.PI) * 180);
            Matrix translation = new Matrix();
            translation.Translate(pt.X, pt.Y);

            anchor.Transform = new SvgTransformList(_transforms.Result.Clone());
            anchor.Transform.Add(translation);
            anchor.Transform.Add(rotation);
            _cur.AddChild(anchor);
        }