2017-02-01 6 views
0

Ich möchte ein verkleinertes Bild in meiner Picturebox anzeigen. Das Originalbild ist: http://www.directupload.net/file/d/4619/78xat5o5_jpg.htm(C#) Bildgröße ändern

und das Bild in meiner Form: http://www.directupload.net/file/d/4619/lp9nzjgp_png.htm

Meine picturebox Größe 500x500px ist. Meine Methode, die ich für die Größe ändern verwenden:

public static Image ResizePicByWidth(Image sourceImage, double newWidth) 
    { 
     double sizeFactor = newWidth/sourceImage.Width; 
     double newHeigth = sizeFactor * sourceImage.Height; 
     Bitmap newImage = new Bitmap((int)newWidth, (int)newHeigth); 
     using (Graphics g = Graphics.FromImage(newImage)) 
     { 
      g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; 
      g.DrawImage(sourceImage, new Rectangle(0, 0, (int)newWidth, (int)newHeigth)); 
     } 
     return newImage; 
    } 

Ich rufe die Methode mit dem Originalbild und die Breite vom picturebox. Aber wie kann ich das Bild richtig skalieren? Ich möchte, dass mein Formular das ganze Bild zeigt. Und ich weiß, dass dieses Bild Strahlen am Rand haben. Ich hoffe, Sie wissen, was ich meine ..

+0

Legen Sie die Breite und Höhe des Bildes auf den gewünschten Wert fest. – Steve

+0

Sie haben eine neue Breite eingestellt aber Sie sind eigentlich auch neu um die Bildbox an die neue Höhe anzupassen. Oder setzen Sie Sizemode zum Zoomen. In diesem Fall müssen Sie überhaupt keine Größenänderung vornehmen! – TaW

+0

Ihr Englisch ist schlecht, sorry .. Aber der Sizemode ist die Lösung – ExclusivAtom

Antwort

2

PictureBox hat eine SizeMode-Eigenschaft. Wenn Sie diese Option auf "Zoom" einstellen, wird die Größe des darin enthaltenen Bildes automatisch so angepasst, dass es in das Bild passt.

+0

Das tut Arbeit. http://www.directupload.net/file/d/4619/ako9gcqp_png.htm – ExclusivAtom

+0

meine Schuld. Ich setze BackgroundImageLayout auf Zoom und nicht auf den SizeMode. Vielen Dank – ExclusivAtom