wpf - SkiaSharp 可以在 WPF 应用程序中使用吗?
问题描述
我知道SkiaSharp
画布可以放在Grid
Xamarin 应用程序中。这是一些示例(工作)代码:
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 中使用?
解决方案
首先,您必须安装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"/>
推荐阅读
- python - 合并不常见的行
- gojs - 使用 GoJS Robot 用 Cypress 测试 GoJS 图
- c - 如何在没有Linux中的非本机库的情况下在C中通过串行发送原始二进制数据
- javascript - D3.js 替换 svg 路径中的点
- ios14 - 在范围内找不到“标签” - Catalyst 错误
- c# - WebApi HttpPost 未从 HttpClient 接收发布的内容
- scala - 使用 scala 进程构建器语法错误的 psql \copy 命令
- statistics - 使用`pyhf`浮动信号和背景强度
- php - 如何从 WooCommerce 中的返回 URL 中提取 JSON 密钥以进行身份验证
- kotlin - 如何从 Kotlin 中的匿名 lambda 返回?