コード例 #1
0
 public void DrawPositionedText(byte[] text, SKPoint[] points, SKPaint paint)
 {
     canvas.DrawPositionedText(text, points, paint);
     if (calculateBounds)
     {
         displayObject.addBoundingPoints(points);
     }
 }
コード例 #2
0
ファイル: ARDrawer.cs プロジェクト: rijesha/AR-Sudoku-Solver
        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++;
                }
            }
        }
コード例 #3
0
ファイル: CanvasExtensions.cs プロジェクト: zschong/SkiaSharp
		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);
			}
		}
コード例 #4
0
 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);
     }
 }
コード例 #5
0
        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);
            }
        }