Skiasharp 是否可以在Avalonia应用程序中创建Skia画布元素?
我希望将一个电子应用程序移植到Avalonia。该应用程序目前使用Paper.js绘制和管理与复杂多边形的交互。查看Avalonia,我注意到它使用了Skia,它似乎提供了与Paper.js几乎相同的功能。我希望有一种简单的方法来创建Skia“画布”,直接使用SkiaSharep API 不幸的是,我没有太多的运气找到文档/答案。avalonia gitter上有人提到我可能会使用RenderTargetBitmap,但在查看源代码(找不到任何文档)后,我认为直接使用Skia画布会更容易/更优雅Skiasharp 是否可以在Avalonia应用程序中创建Skia画布元素?,skiasharp,skia,avaloniaui,Skiasharp,Skia,Avaloniaui,我希望将一个电子应用程序移植到Avalonia。该应用程序目前使用Paper.js绘制和管理与复杂多边形的交互。查看Avalonia,我注意到它使用了Skia,它似乎提供了与Paper.js几乎相同的功能。我希望有一种简单的方法来创建Skia“画布”,直接使用SkiaSharep API 不幸的是,我没有太多的运气找到文档/答案。avalonia gitter上有人提到我可能会使用RenderTargetBitmap,但在查看源代码(找不到任何文档)后,我认为直接使用Skia画布会更容易/更优雅
这可能吗?您有几种选择:
- 使用
:锁定位,从中创建WriteableBitmap
,创建SKBitmap
,绘制。然后将该可写位图用作SKCanvas
图像
控件的
源
。这是最安全、最便携,但不幸的是性能最差的方式
- 直接在渲染线程上访问底层Skia上下文,可以找到一个示例。请注意,
回调可能会从任何线程调用,因此请正确管理锁。还要注意的是,Avalonia具有可插拔的渲染器体系结构,因此从技术上讲,渲染器不能保证是Skia,即使它目前默认用于所有平台,并且很可能仍然是主要渲染器Render
- 一旦退出0.10,您将能够创建硬件加速的SKCanvas并渲染到OpenGL纹理。将OpenGL纹理用作Avalonia图像所需的基础设施目前正在开发中
面板
),而不是一个绘图工具(比如html画布)。如果StreamGeometry
满足您的需要,您可以覆盖OnRender
并使用DrawingContext
。