diff --git a/src/Skia/Avalonia.Skia/Helpers/DrawingContextHelper.cs b/src/Skia/Avalonia.Skia/Helpers/DrawingContextHelper.cs
index 44caa8ae5a..fb9ccf78e6 100644
--- a/src/Skia/Avalonia.Skia/Helpers/DrawingContextHelper.cs
+++ b/src/Skia/Avalonia.Skia/Helpers/DrawingContextHelper.cs
@@ -1,20 +1,47 @@
using System.Diagnostics.CodeAnalysis;
+using System.Threading.Tasks;
using Avalonia.Media;
+using Avalonia.Metadata;
using Avalonia.Platform;
+using Avalonia.Rendering;
using SkiaSharp;
namespace Avalonia.Skia.Helpers
{
public static class DrawingContextHelper
{
+ /// .
+ public static Task RenderAsync(SKCanvas canvas, Visual visual)
+ {
+ return RenderAsync(canvas, visual, visual.Bounds, SkiaPlatform.DefaultDpi);
+ }
+
+ ///
+ /// Renders Avalonia visual into a SKCanvas instance.
+ /// This is useful in scenarios where canvas is not controlled by application, but received from another non avalonia api
+ /// like: SKCanvas canvas = SKDocument.BeginPage(...);
+ ///
+ /// Skia canvas to render into.
+ /// Avalonia visual.
+ /// Clipping rectangle.
+ /// Dpi of drawings.
+ public static Task RenderAsync(SKCanvas canvas, Visual visual, Rect clipRect, Vector dpi)
+ {
+ using var drawingContextImpl = WrapSkiaCanvas(canvas, dpi);
+ using var drawingContext = new PlatformDrawingContext(drawingContextImpl, false);
+ ImmediateRenderer.Render(drawingContext, visual, clipRect);
+ return Task.CompletedTask;
+ }
+
///
/// Wrap Skia canvas in drawing context so we can use Avalonia api to render to external skia canvas
/// this is useful in scenarios where canvas is not controlled by application, but received from another non avalonia api
/// like: SKCanvas canvas = SKDocument.BeginPage(...);
///
- ///
+ /// Skia canvas to render into.
///
/// DrawingContext
+ [Unstable("IDrawingContextImpl usage is not supported in Avalonia 11.0.")]
public static IDrawingContextImpl WrapSkiaCanvas(SKCanvas canvas, Vector dpi)
{
var createInfo = new DrawingContextImpl.CreateInfo