private SKSurface RasterizeSegment(SKPicture segment, RasterizeDimensions dim, float skewAngle, params SKPaint[] paints) { if (dim.SvgWidth <= 0 || dim.SvgWidth <= 0) { return(null); } var surface = SKSurface.Create(dim.SvgInfo); surface.Canvas.Translate(dim.Translate.X, dim.Translate.Y); Skew(surface.Canvas, skewAngle, 0); foreach (var paint in paints) { surface.Canvas.DrawPicture(segment, ref dim.SvgMatrix, paint); } return(surface); }
/// <summary> /// Recalculates the segment dimensions based on a canvas size /// </summary> /// <param name="canvasWidth">Width the of the canvas in pixels</param> /// <param name="canvasHeight">Height of the canvas in pixels</param> public void SetDimensions(int canvasWidth, int canvasHeight) { Dim = new RasterizeDimensions(_res.GetSvgSize(SegmentType, StyleDefinition.SegmentWeight), canvasWidth, canvasHeight, NumChars, NumLines, StyleDefinition.SkewAngle); Style = StyleDefinition.Scale(Dim.SvgScale); }