public static void DrawBitmap(this SKCanvas canvas, SKBitmap bitmap, SKRect source, SKRect dest,
                                      BitmapStretch stretch,
                                      BitmapAlignment horizontal = BitmapAlignment.Center,
                                      BitmapAlignment vertical   = BitmapAlignment.Center,
                                      SKPaint paint = null)
        {
            if (stretch == BitmapStretch.Fill)
            {
                canvas.DrawBitmap(bitmap, source, dest, paint);
            }
            else
            {
                float scale = 1;

                switch (stretch)
                {
                case BitmapStretch.None:
                    break;

                case BitmapStretch.Uniform:
                    scale = Math.Min(dest.Width / source.Width, dest.Height / source.Height);
                    break;

                case BitmapStretch.UniformToFill:
                    scale = Math.Max(dest.Width / source.Width, dest.Height / source.Height);
                    break;
                }

                SKRect display = CalculateDisplayRect(dest, scale * source.Width, scale * source.Height,
                                                      horizontal, vertical);

                canvas.DrawBitmap(bitmap, source, display, paint);
            }
        }
        // SkiaSharp-os Canvas-re Kirajzol egy képet. "ApectFit"
        public static void DrawBitmap(this SKCanvas canvas, SKBitmap bitmap, SKRect dest,
                                      BitmapStretch stretch)
        {
            // Scaling beállítása Aspect fit-hez hasonlóra
            float  scale   = Math.Min(dest.Width / bitmap.Width, dest.Height / bitmap.Height);
            SKRect display = CalculateDisplayRect(dest, scale * bitmap.Width, scale * bitmap.Height);

            canvas.DrawBitmap(bitmap, display);
        }
Exemple #3
0
        void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs args)
        {
            SKImageInfo info    = args.Info;
            SKSurface   surface = args.Surface;
            SKCanvas    canvas  = surface.Canvas;

            canvas.Clear();

            SKRect dest = new SKRect(0, 0, info.Width, info.Height);

            BitmapStretch   stretch    = (BitmapStretch)stretchPicker.SelectedItem;
            BitmapAlignment horizontal = (BitmapAlignment)horizontalPicker.SelectedItem;
            BitmapAlignment vertical   = (BitmapAlignment)verticalPicker.SelectedItem;

            canvas.DrawBitmap(bitmap, SOURCE, dest, stretch, horizontal, vertical);
        }