public DrawingContext CreateDrawingContext() { var fb = _surface.Lock(); PixelFormatShim shim = null; SKImageInfo framebuffer = new SKImageInfo(fb.Width, fb.Height, TranslatePixelFormat(fb.Format), SKAlphaType.Opaque); var surface = SKSurface.Create(framebuffer, fb.Address, fb.RowBytes) ?? (shim = new PixelFormatShim(framebuffer, fb.Address, fb.RowBytes)) .CreateSurface(); if (surface == null) { throw new Exception("Unable to create a surface for pixel format " + fb.Format + " or pixel format translator"); } var canvas = surface.Canvas; canvas.RestoreToCount(0); canvas.Save(); canvas.Clear(SKColors.Red); canvas.ResetMatrix(); var scale = Matrix.CreateScale(fb.Dpi.Width / 96, fb.Dpi.Height / 96); return(new DrawingContext(new DrawingContextImpl(canvas, scale, canvas, surface, shim, fb))); }
public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer) { var fb = _surface.Lock(); PixelFormatShim shim = null; SKImageInfo framebuffer = new SKImageInfo(fb.Width, fb.Height, fb.Format.ToSkColorType(), SKAlphaType.Premul); var surface = SKSurface.Create(framebuffer, fb.Address, fb.RowBytes) ?? (shim = new PixelFormatShim(framebuffer, fb.Address, fb.RowBytes)) .CreateSurface(); if (surface == null) { throw new Exception("Unable to create a surface for pixel format " + fb.Format + " or pixel format translator"); } var canvas = surface.Canvas; canvas.RestoreToCount(0); canvas.Save(); canvas.ResetMatrix(); var scale = Matrix.CreateScale(fb.Dpi.Width / 96, fb.Dpi.Height / 96); return(new DrawingContextImpl(canvas, visualBrushRenderer, scale, canvas, surface, shim, fb)); }