SkiaSharp 可以在 WPF 应用程序中使用吗?

Can SkiaSharp be used in a WPF Application?

我知道 SkiaSharp canvas 可以放在 Xamarin 应用程序中的 Grid 中。这是一些示例(工作)代码:

xmlns:skia="clr-namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms"
<skia:SKCanvasView 
    x:Name="AUView"
    Grid.Row="2"
    PaintSurface="AUView_PaintSurface" />

但是当我尝试在 WPF 应用程序中做类似的事情时:

xmlns:skia="clr-namespace:SkiaSharp;assembly=SkiaSharp"
<skia:SKCanvas
   Name="AUView"
   Grid.Row="2"
   PaintSurface="AUView_PaintSurface" />

我收到错误:

A value of type 'SKCanvas' cannot be added to a collection or dictionary of type 'UIElementCollection'.

是否可以在 WPF 的网格单元格中放置 SKCanvas,或者整个页面是否必须是 SKCanvas

否则,how/can 你在 WPF 中使用 SkiaSharp

首先,您必须安装 SkiaSharp.Views.WPF package, which will automatically install SkiaSharp, too. The SkiaSharp package alone will not contain the needed WPF control, which is SKElement

因为它是 FrameworkElement,所以您可以将它放在视图中的任何位置。 SKCanvas 不是 WPF 兼容组件。要在 XAML 中使用 SKElement,您必须引入其 XML 命名空间。

xmlns:skia="clr-namespace:SkiaSharp.Views.WPF;assembly=SkiaSharp.Views.WPF"

然后将 SKCanvas 控件放在您视图中的任意位置。

<skia:SKElement
      Name="AUView"
      Grid.Row="2"
      PaintSurface="AUView_PaintSurface"/>