2010-10-07 15 views
5

Zasadniczo chcę rozciągnąć mniejszy obraz (tj. 300x300 na większy, tj. 500 x 500) bez spacji lub czarnego tła.rysunek do większej mapy bitowej

Mam bitmapę (powiedzmy szerokość 500px i wysokość 500px). Jak narysować inny (mniejszy) obraz na tej mapie bitowej, więc zajmuje całą bitmapę?

Już wiem, jak utworzyć mapę bitową (tj. var bitmap = new Bitmap(500, 500);) i uzyskać obraz - można go załadować z pliku (np. var image = Image.FromFile(...);) lub uzyskać z innego źródła.

+0

Dobre pytanie i dobre odpowiedzi! – Bitterblue

Odpowiedz

14

Zobacz dokumentację dla Graphics.DrawImage. Możesz określić prostokąty źródłowy i docelowy.

Przykładowy kod:

Image i = Image.FromFile(fileName); // This is 300x300 
Bitmap b = new Bitmap(500, 500); 

using(Graphics g = Graphics.FromImage(b)) 
{ 
    g.DrawImage(i, 0, 0, 500, 500); 
} 

Aby użyć kodu upewnij się, aby dodać odniesienie do montażu System.Drawing i dodać using System.Drawing do pliku.

+0

to nie działa – yasink

+1

żadnego konkretnego powodu, dla którego widzisz, dlaczego nie działa? błąd? co się stanie, gdy uruchomisz kod? – WildCrustacean

1

Można spróbować przy użyciu następujących:

public Image ImageZoom(Image image, Size newSize) 
{ 
    var bitmap = new Bitmap(image, newSize.Width, newSize.Height); 
    using (var g = Graphics.FromImage(bitmap)) 
    { 
     g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    } 

    return bitmap; 
} 

I wybrać jedną z dostępnych InterpolationModes.

Powiązane problemy