首页 > 解决方案 > SkiaSharp 可以在 WPF 应用程序中使用吗?

问题描述

我知道SkiaSharp画布可以放在GridXamarin 应用程序中。这是一些示例(工作)代码:

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'.

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

否则,您如何/可以SkiaSharp在 WPF 中使用?

标签: wpfskiasharp

解决方案


首先,您必须安装SkiaSharp.Views.WPF软件包,它也会自动安装SkiaSharp。单独的SkiaSharp包将不包含所需的 WPF 控件,即SKElement.

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

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

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

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

推荐阅读