Xamarin中是否有Canvas控件的等价物

时间:2019-05-01 12:18:09

标签: xamarin xamarin.forms

我需要能够在Xamarin Forms中进行一些直接绘制。是否有与画布等效的控件?我看到某个地方可能是AbsoluteLayout,但是我需要一些可以执行的命令,例如,执行DrawStringDrawArc。这样的事情是否存在,还是您必须创建一个自定义控件?

1 个答案:

答案 0 :(得分:4)

尝试使用SkiaSharp,它基本上可以使您执行与在Android本机画布中执行的操作大致相同的操作。

要使用它:

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

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

xmlns:skia="clr-namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms"
  1. 添加Skia画布视图,定义回调方法的名称,该方法将用于从后面的代码中绘制该回调方法:
<skia:SKCanvasView                
    x:Name="CanvasView"
    PaintSurface="OnCanvasViewPaintSurface"/>
  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);
}