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

标签 xamarin xamarin.forms

我需要能够在 Xamarin Forms 中进行一些直接绘图。是否有与 Canvas 等效的控件?我在某个地方看到了可能是 AbsoluteLayout,但我需要一些我可以执行的东西,例如,在其上执行 DrawStringDrawArc。有这样的东西存在吗,还是必须要创建自定义控件?

最佳答案

试试 SkiaSharp ,它基本上允许你做的事情与在 Android 的原生 Canvas 中做的差不多。

使用它:

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

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

xmlns:skia="clr-namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms"
  1. 添加 Skia Canvas View ,从后面的代码中定义将用于在其上绘制的回调方法的名称:
<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);
}

关于xamarin - Xamarin 中是否有 Canvas 控件的等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55936160/

相关文章:

ios - xamarin iOS 中的后台线程在 3 分钟后自动结束

xamarin.forms - ITMS-90809:不推荐使用的API-Apple将停止接受使用UIWebView API的应用程序的提交

ios - Xamarin表单-所选项目的Listview将所有背景更改为相同

c# - 在 C#、Xamarin Forms 中获取异步任务的结果

xamarin.forms - 如何创建连接?

xaml - 使用带有标签可见性 Xamarin 表单的转换器时如何将默认值设置为 false

xamarin - 图像未从 URL 加载到 Mvx.MvxImageView

ios - 升级到 Xcode 10.2.1 后部署错误

c# - Xamarin.Forms 中的计时器

c# - 从 Xamarin PCL 调用 REST API 时程序挂起