示例#1
0
        /*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();
        }
示例#2
0
        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
        }
示例#3
0
 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);
     }
 }