private void onCanvasViewPaintSurface(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) { if (doubleBufferingBitmap == null && bitmap == null) { this.bitmapInit(); } switch (renderingMode) { case RenderingMode.Low: e.Surface.Canvas.SetMatrix(matrix); LongUzorGraphic.Draw(e.Surface.Canvas, canvasView); break; case RenderingMode.DoubleBuffering: e.Surface.Canvas.SetMatrix(bitmapMatrix); e.Surface.Canvas.Clear(); e.Surface.Canvas.DrawBitmap(doubleBufferingBitmap, 0, 0); break; case RenderingMode.FullDoubleBuffering: e.Surface.Canvas.SetMatrix(matrix); e.Surface.Canvas.Clear(this.Data.BackColor.ToSKColor()); e.Surface.Canvas.DrawBitmap(bitmap, canvasView.CanvasSize.Width / 2 - bitmap.Width / 2, canvasView.CanvasSize.Height / 2 - bitmap.Height / 2); break; default: break; } // TODO: draw zoom-indicator in top angle with specifical parent-view }
private void updateBitmap() { if (renderingMode == RenderingMode.DoubleBuffering) { bitmapCanvas.SetMatrix(matrix); LongUzorGraphic.Draw(bitmapCanvas, canvasView); bitmapMatrix = SKMatrix.MakeIdentity(); } else if (renderingMode == RenderingMode.FullDoubleBuffering) { bitmapCanvas.ResetMatrix(); LongUzorGraphic.Draw(bitmapCanvas, bitmap.Width, bitmap.Height); } }