public static void DrawBitmap(this SKCanvas canvas, SKBitmap bitmap, SKRect dest, SKStretch stretch, SKAlignment horizontal = SKAlignment.Center, SKAlignment vertical = SKAlignment.Center, SKPaint paint = null) { if (stretch == SKStretch.Fill) { canvas.DrawBitmap(bitmap, dest, paint); } else { float scale = 1; switch (stretch) { case SKStretch.None: break; case SKStretch.Uniform: scale = Math.Min(dest.Width / bitmap.Width, dest.Height / bitmap.Height); break; case SKStretch.UniformToFill: scale = Math.Max(dest.Width / bitmap.Width, dest.Height / bitmap.Height); break; } SKRect display = CalculateDisplayRect(dest, scale * bitmap.Width, scale * bitmap.Height, horizontal, vertical); canvas.DrawBitmap(bitmap, display, paint); } }
void ExecuteSwitchStretchCommand() { switch (Stretch) { case SKStretch.None: Stretch = SKStretch.Fill; break; case SKStretch.Fill: Stretch = SKStretch.Uniform; break; case SKStretch.Uniform: Stretch = SKStretch.UniformToFill; break; case SKStretch.UniformToFill: Stretch = SKStretch.None; break; } }