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); }
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); }