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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 /// <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);