Xamarin формирует Dotted Cirlce, используя Skia Sharp - PullRequest
0 голосов
/ 08 июля 2019

Как мы можем создать пунктирный круг в формах ксамарина, используя Skia Sharp, я много пробовал, но не смогу это сделать, может кто-нибудь помочь мне с этим.

        SKImageInfo info = args.Info;
        SKSurface surface = args.Surface;
        SKCanvas canvas = surface.Canvas;

        canvas.Clear();

        SKPaint paint = new SKPaint
        {
            Style = SKPaintStyle.Stroke,
            Color = Color.Red.ToSKColor(),
            StrokeWidth = 10
        };
        canvas.DrawCircle(info.Width / 3, info.Height / 2, 100, paint);

1 Ответ

0 голосов
/ 08 июля 2019

Вы довольно близко. Вам просто нужно понять, что вы делаете. Правильно ли вы настраиваете конструктор вашей страницы? Вы должны

  1. Создайте экземпляр SKCanvasView и добавьте его в Содержимое вашей страницы.
  2. Предполагая, что именем вашего класса или страницы является SimpleCirclePage.cs, вам нужно добавить это внутри него вместе с другими элементами.
  3. Добавьте обработчик событий к событию PaintSurface вашего экземпляра SKCanvasView.

Конструктор

public SimpleCirclePage()
{
        SKCanvasView canvasView = new SKCanvasView();
        canvasView.PaintSurface += OnCanvasViewPaintSurface;
        Content = canvasView;
}

Обработчик событий

void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs args)
{
        SKImageInfo info = args.Info;
        SKSurface surface = args.Surface;
        SKCanvas canvas = surface.Canvas;

        canvas.Clear();

        // Creating the Outline of the circle with Black
        SKPaint paint = new SKPaint
        {
                Style = SKPaintStyle.Stroke,
                Color = Color.Black.ToSKColor(),
                StrokeWidth = 22
        };
        canvas.DrawCircle(info.Width / 2, info.Height / 2, 100, paint);

        // Filling the circle with red
        paint.Style = SKPaintStyle.Fill;
        paint.Color = SKColors.Red;
        canvas.DrawCircle(info.Width / 2, info.Height / 2, 100, paint);
}
...