/*private float beginScale = 1; * private void resetScale() * { * matrix = SKMatrix.Identity; * SKMatrix.PostConcat(ref matrix, SKMatrix.CreateScale(beginScale, beginScale, canvasView.CanvasSize.Width, canvasView.CanvasSize.Height)); * }*/ private void bitmapInit() { this.renderingMode = (RenderingMode)Preferences.Get("RenderingMode", 2); if (renderingMode == RenderingMode.DoubleBuffering) { this.doubleBufferingBitmap = new SKBitmap((int)this.canvasView.CanvasSize.Width, (int)this.canvasView.CanvasSize.Height); this.bitmapCanvas = new SKCanvas(doubleBufferingBitmap); } else if (renderingMode == RenderingMode.FullDoubleBuffering) { try { this.bitmap = new SKBitmap(LongUzorGraphic.GetResultContentWidth() > 7000? 7000 : LongUzorGraphic.GetResultContentWidth(), LongUzorGraphic.GetResultContentHeight() > 13000? 13000: LongUzorGraphic.GetResultContentHeight()); } catch (System.Exception e) { this.bitmap = new SKBitmap(3000, 4000); var mb = new MessageBox(e.Message + " " + AppResource.SwitchRenderingAlert); mb.OkButton_Clicked += hideAlert; this.mainGrid.Children.Add(mb); this.renderingMode = RenderingMode.Low; } this.bitmapCanvas = new SKCanvas(bitmap); } else { return; } this.updateBitmap(); }
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); } }