Xamarin 中是否有 Canvas 控件的等效项

2 xamarin xamarin.forms

我需要能够在 Xamarin Forms 中进行一些直接绘图。是否有与画布等效的控件?我在某处看到可能是 AbsoluteLayout,但我需要一些我可以执行的东西,例如,执行 aDrawStringDrawArcon。是否存在这样的东西,或者您是否必须创建自定义控件?

Jul*_*ñas 8

尝试使用SkiaSharp,它基本上允许您做或多或少与您在 Android 的本机画布中所做的相同的事情。

要使用它:

  1. 将 NuGet 包添加SkiaSharp.Views.Forms到您的项目中。

  2. 将 Skia 命名空间添加到您的页面或布局:

xmlns:skia="clr-namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms"
Run Code Online (Sandbox Code Playgroud)
  1. 添加 Skia 画布视图,定义将用于从后面的代码中绘制的回调方法的名称:
<skia:SKCanvasView                
    x:Name="CanvasView"
    PaintSurface="OnCanvasViewPaintSurface"/>
Run Code Online (Sandbox Code Playgroud)
  1. 随便画画:
private void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs args)
{
    var info = args.Info;
    var surface = args.Surface;
    var canvas = surface.Canvas;

    canvas.Clear();

    // In this example, we will draw a circle in the middle of the canvas
    var paint = new SKPaint
    {
        Style = SKPaintStyle.Fill,
        Color = Color.Red.ToSKColor(), // Alternatively: SKColors.Red
    };
    canvas.DrawCircle(info.Width / 2, info.Height / 2, 100, paint);
}
Run Code Online (Sandbox Code Playgroud)