2009-06-01 72 views
3

我想繪製兩個圖像並排使用C#圖形命名空間。 這裏是一個非常簡單的例子,假設我們有相同高度的兩個圖像:C#:儘管不同分辨率使用Graphics.DrawImage保留大小

Image[] oldImages = GetOldImages(); 

var newImage = new Bitmap(oldImages[0].Width + oldImages[1].Width, 800); 

using (var newImageGraphics = Graphics.FromImage(newImage)) 
{ 
    newImageGraphics.DrawImage(oldImages[0], 0, 0); 
    newImageGraphics.DrawImage(oldImages[1], oldImage[0].Width, 0); 
    newImageGraphics.Save(); 
} 

如果兩個舊圖像的分辨率是相同的這個工程確定。

但是,如果分辨率不同,那麼圖像會被調整大小,從而導致問題。例如,如果第一張圖像的分辨率不同,則第二張圖像的位置不正確。

有沒有人知道我可以很容易地解決這個問題?理想情況下,我希望原始圖像的高度和寬度在繪製到新圖像時保持不變。

回答

1

基本上你需要在添加到新圖像之前調整第二個圖像的大小。

儘管如你所說你想保留原來的高度和寬度,你需要改變第二張圖片的畫布尺寸。這通過在實際圖像周圍添加空白區域來增加圖像的大小。如果第二張圖像大於第一張圖像,則需要對第一張圖像執行此操作。

4

試試這招:

Bitmap picture_1 = new Bitmap(picture_1_path); 
Graphics graphics = Graphics.FromImage(picture_1); 
Bitmap picture_2 = new Bitmap(picture_2_path); 
picture_2.SetResolution(graphics.DpiX, graphics.DpiY); 

//Then do with pictures anything 
+0

我有一個問題有兩個圖像的分辨率,這並獲得成功。 – agarcian 2015-05-11 21:13:32