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); } }
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); } }
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); }
public virtual void VisitLineElement(SvgLineElement element) => DefaultVisit(element);
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());
public override void VisitLineElement(SvgLineElement element) { base.VisitLineElement(element); VisitSvgGeometryElement(element); }
protected abstract void RenderLine(TSession session, SvgLineElement element);