public void DrawPositionedText(byte[] text, SKPoint[] points, SKPaint paint) { canvas.DrawPositionedText(text, points, paint); if (calculateBounds) { displayObject.addBoundingPoints(points); } }
private void PaintCanvas(object sender, SKPaintSurfaceEventArgs e) { int surfaceWidth = e.Info.Width; int surfaceHeight = e.Info.Height; SKCanvas canvas = e.Surface.Canvas; SKPaint paint = new SKPaint(); paint.Color = SKColors.Black; paint.StrokeWidth = 15; paint.Style = SKPaintStyle.Stroke; canvas.Clear(); if (StaticSKInfo.drawCorners) { var path = new SKPath(); ConvertCoordinates(StaticSKInfo.corners); path.AddPoly(StaticSKInfo.corners); canvas.DrawPath(path, paint); StaticSKInfo.drawCorners = false; ConvertCoordinates(StaticSKInfo.centres); int i = 0; foreach (var c in StaticSKInfo.centres) { SKPaint textPaint = new SKPaint { Style = SKPaintStyle.Stroke, StrokeWidth = 1, FakeBoldText = true, Color = SKColors.Black }; SKPaint textPaint2 = new SKPaint { Style = SKPaintStyle.Stroke, StrokeWidth = 1, FakeBoldText = true, Color = SKColors.DarkGreen }; textPaint.TextSize = 100f; textPaint2.TextSize = 100f; if (StaticSKInfo.solvedNumbers[i] != 0) { canvas.DrawPositionedText(StaticSKInfo.solvedNumbers[i].ToString(), new SKPoint[] { c }, textPaint2); } canvas.DrawPositionedText(StaticSKInfo.detectedNumbers[i] == 0 ? "" : StaticSKInfo.detectedNumbers[i].ToString(), new SKPoint[] { c }, textPaint); i++; } } }
public static void DrawShapedText(this SKCanvas canvas, SKShaper shaper, string text, float x, float y, SKPaint paint) { if (canvas == null) throw new ArgumentNullException(nameof(canvas)); if (shaper == null) throw new ArgumentNullException(nameof(shaper)); if (text == null) throw new ArgumentNullException(nameof(text)); if (paint == null) throw new ArgumentNullException(nameof(paint)); if (string.IsNullOrEmpty(text)) return; // shape the text var result = shaper.Shape(text, x, y, paint); // draw the text using (var paintClone = paint.Clone()) { paintClone.TextEncoding = SKTextEncoding.GlyphId; paintClone.Typeface = shaper.Typeface; var bytes = result.Codepoints.Select(cp => BitConverter.GetBytes((ushort)cp)).SelectMany(b => b).ToArray(); canvas.DrawPositionedText(bytes, result.Points, paintClone); } }
public void Render(SKCanvas canvas, SKPoint point) { Top = point.Y; canvas.SetMatrix(SKMatrix.MakeTranslation(point.X, (float)(point.Y + Height))); foreach (var item in RenderList) { canvas.DrawPositionedText(item.Text.Text, item.Text.Points, item.Paint); } }
void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs args) { SKCanvas canvas = args.Surface.Canvas; canvas.Clear(Color.Black.ToSKColor()); //paint it black var pathStroke = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Stroke, Color = SKColors.Red, StrokeWidth = 5 }; var pathStroke2 = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Stroke, Color = SKColors.Red, StrokeWidth = 2, TextSize = 20 }; var pathStroke1 = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Stroke, Color = SKColors.BlueViolet, StrokeWidth = 5 }; var path = new SKPath(); int i = 80; int k = 7; for (int j = 0; j < 18; j++) { path.MoveTo(80, 450 - k * 15); path.LineTo(80, 450 - (k + 1) * 15); k++; canvas.DrawPath(path, pathStroke); } path = new SKPath(); for (int j = 0; j < 24; j++) { path.MoveTo(i, 345); path.LineTo(i + 30, 345); i = i + 30; canvas.DrawPath(path, pathStroke); } SKPoint[] temp = new SKPoint[] { new SKPoint(40, 345), new SKPoint(50, 345) }; canvas.DrawPositionedText("07", temp, pathStroke2); temp = new SKPoint[] { new SKPoint(40, 210), new SKPoint(50, 210) }; canvas.DrawPositionedText("16", temp, pathStroke2); temp = new SKPoint[] { new SKPoint(40, 75), new SKPoint(50, 75) }; canvas.DrawPositionedText("25", temp, pathStroke2); path = new SKPath(); i = 80; if (w.Hours.Count != 0) { for (int j = 0; j < w.Hours.Count - 1; j++) { path.MoveTo(i, 450 - w.Hours[j] * 15); i = i + 30; path.LineTo(i, 450 - w.Hours[j + 1] * 15); } // draw the path canvas.DrawPath(path, pathStroke1); } }