代码之家  ›  专栏  ›  技术社区  ›  Matthew Goulart

是否可以在Avalonia应用程序中创建Skia画布元素?

  •  0
  • Matthew Goulart  · 技术社区  · 6 年前

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

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

    这可能吗?

    0 回复  |  直到 5 年前
        1
  •  5
  •   kekekeks    6 年前

    您有几个选择:

    • 使用 WriteableBitmap :锁定位,创建 SKBitmap 从中,创建 SKCanvas 画然后将该可写位图用作 Source 对于 Image 控制这是最安全、最便携,但不幸的是性能最差的方式。
    • 直接在渲染线程上访问底层Skia上下文,可以找到一个示例 here .注意 Render 回调可以从任何线程调用,因此请正确管理您的锁。还要注意的是,Avalonia具有可插拔的渲染器体系结构,因此从技术上讲,渲染器不能保证是Skia,即使它目前默认用于所有平台,并且很可能仍然是主要渲染器
    • 一旦退出0.10,您将能够创建硬件加速的SKCanvas并渲染到OpenGL纹理。将OpenGL纹理用作Avalonia图像所需的基础设施目前正在开发中 OpenGL control branch
    推荐文章