2

我希望将 Electron 应用程序移植到 Avalonia。该应用程序目前使用 Paper.js 来绘制和管理与复杂多边形的交互。查看 Avalonia,我注意到它使用了 Skia,它似乎提供了与 Paper.js 大致相同的功能。我希望有一种简单的方法可以创建 Skia“画布”并直接使用 SkiaSharp API。

不幸的是,我没有太多运气找到文档/答案。avalonia gitter 上的某个人提到我可能会使用 RenderTargetBitmap,但是在查看源代码(找不到任何文档)之后,我认为直接使用 Skia 画布会更容易/更优雅。

这可能吗?

4

1 回答 1

5

你有几个选择:

  • 使用WriteableBitmap:锁定位,SKBitmap从中创建,创建SKCanvas,绘制。然后使用该 WritableBitmap 作为控件SourceImage这是最安全最便携,但不幸的是性能最低的方式。
  • 直接在渲染线程上访问底层 Skia 上下文,您可以在此处找到示例。请注意,Render可能会从任何线程调用回调,因此请正确管理您的锁。另请注意,Avalonia 具有可插入的渲染器架构,因此渲染器在技术上不能保证是 Skia,即使它目前在所有平台上默认使用并且很可能仍然是主要渲染器
  • 一旦 0.10 发布,您将能够创建硬件加速的 SKCanvas 并渲染到 OpenGL 纹理。使用 OpenGL 纹理作为 Avalonia 图像所需的基础设施目前正在OpenGL 控制分支中工作
于 2020-05-06T07:53:13.933 回答