Могу ли я нарисовать круги, эллипсы или квадраты в XAML в проекте Xamarin? - PullRequest
0 голосов
/ 20 декабря 2018

Хорошо, я хочу нарисовать круги, квадраты, эллипсы и треугольники в проекте Xamarin, но я не могу найти, как в UWP это можно сделать так:

<StackPanel>
     <Ellipse Fill="Yellow"
              Height="100"
              Width="200"
              StrokeThickness="2"
              Stroke="Black"/>
</StackPanel>

вопрос в том, что яне знаю, нужен ли мне пакет NuGet или какое-то дополнение к нему в Xamarin

1 Ответ

0 голосов
/ 24 декабря 2018

Если вы хотите нарисовать круг (достигается только кодом), вы можете обратиться к следующему коду:

public class SimpleCirclePage : ContentPage
{
    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();

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

    }
}

Подробности: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/basics/circle

Если вы хотите использовать XAMLи код для рисования эллипса, вы можете обратиться к следующему коду.

В XAML

 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:skia="clr- namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms"
         x:Class="SkiaSharpFormsDemos.Basics.EllipseFillPage"
         Title="Ellipse Fill">

<skia:SKCanvasView PaintSurface="OnCanvasViewPaintSurface" />

код

public partial class EllipseFillPage : ContentPage
{
    public EllipseFillPage()
    {
        InitializeComponent();
    }

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

        canvas.Clear();

        float strokeWidth = 5;
        float xRadius = (info.Width - strokeWidth) / 3;
        float yRadius = (info.Height - strokeWidth) / 3;

        SKPaint paint = new SKPaint
        {
            Style = SKPaintStyle.Stroke,
            Color = SKColors.Black,
            StrokeWidth = strokeWidth
        };
        canvas.DrawOval(info.Width / 2, info.Height / 2, xRadius, yRadius, paint);
    }
}

Если вы хотитечтобы рисовать острыми способами, которые используют только XAML (как в UWP), вы можете скачать этот плагин .

...