Feedback

C# - "Zoom" für System.Drawing.Image

Veröffentlicht von am 5/12/2013
(1 Bewertungen)
Manchmal braucht man (oder zumindest ich) eine Funktion um Bilder - dem ImageLayout 'Zoom' entsprechend - zu vergrößern. Sprich so, dass die Seitenverhältnisse beibehalten werden.

Beispiel:
Man hat ein Label 'myLabel'.
Dort soll ein beliebig großes Bild (Image-Eigenschaft) drauf abgebildet werden:
myLabel.Image = new Bitmap("myImage.jpg").Zoom(myLabel.Size);
public static class ExtensionMethods
{
    public static Bitmap Zoom(this Image img, Size max)
    {
        double factorHo = (double)max.Width / (double)img.Width;
        double factorVe = (double)max.Height / (double)img.Height;
        double factor = GetSmaller(factorHo, factorVe);
        return new Bitmap(img, new Size((int)(img.Width * factor), (int)(img.Height * factor)));
    }

    private static double GetSmaller(double n1, double n2)
    {
        if (n1 < n2)
            return n1;
        else
            return n2;
    }
}
Abgelegt unter Zoom, Image, Bild, skallieren.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!