public override void RenderToBuffer(IXCanvas xCanvas, IntPtr pixels, int width, int height, int rowBytes) { var info = new SKImageInfo(width, height, SKImageInfo.PlatformColorType, SKAlphaType.Premul); using (SKSurface surface = SKSurface.Create(info, pixels, rowBytes)) { // Paint all elements from the canvas on the surface new SkiaPainter(surface).Paint(xCanvas); } }
public void Paint(IXCanvas xCanvas) { IBrush?background = xCanvas.Background; if (background is ISolidColorBrush solidColorBrush) { skCanvas.Clear(ToSkiaColor(solidColorBrush.Color)); } else { skCanvas.Clear(SKColors.Transparent); } ITransform?xGraphicsRenderTransform = xCanvas.GraphicsRenderTransform; if (xGraphicsRenderTransform != null) { ApplyTransform(xGraphicsRenderTransform, xCanvas); } PaintGraphicsElements(xCanvas.Children); }
/// <summary> /// Render the graphics to the specified bitmap memory buffer. /// </summary> /// <param name="xCanvas">graphics object to render</param> /// <param name="pixels">buffer data</param> /// <param name="width">width of the bitmap, in pixels</param> /// <param name="height">height of the bitmap, in pixels</param> /// <param name="rowBytes">number of bytes per row in the buffer</param> public abstract void RenderToBuffer(IXCanvas xCanvas, IntPtr pixels, int width, int height, int rowBytes);