2010-10-07 39 views
5

基本上我想在沒有空間或黑色背景的情況下伸展較小的圖像(即300x300到較大的一個即500x500)。將圖像繪製成較大的位圖

我有一個位圖(比方說寬度500px,高度500px)。如何在該位圖上繪製另一個(較小)圖像,這樣就需要整個位圖?

我已經知道如何創建位圖(即​​)並獲取圖像 - 它可以從文件(即var image = Image.FromFile(...);)加載或從其他來源獲得。

+0

好問題和很好的答案! – Bitterblue 2013-03-21 12:00:44

回答

14

請參閱Graphics.DrawImage的文檔。您可以指定源矩形和目標矩形。

示例代碼:

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

使用代碼確保添加引用System.Drawing中裝配並添加using System.Drawing到文件中。

+0

它不起作用 – yasink 2010-10-07 19:07:43

+1

你看到爲什麼它不起作用的任何特定原因?一個錯誤?當你運行代碼時會發生什麼? – WildCrustacean 2010-10-07 19:24:45

1

你可以嘗試使用以下:

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

並從可用InterpolationModes的一個選擇。