2012-10-16 69 views
0

我想打開圖像,添加一個邊框到它並保存圖像在C#中。添加一幀到圖像(位圖)並保存 - 邊框錯誤

我得到了一個代碼,我想這是一個堆棧溢出的答案。那就是:

public Bitmap AddBorder(Bitmap image, Color color, int size) 
    { 
     Bitmap result = new Bitmap(image.Width + size * 2, image.Height + size * 2); 
     Graphics g = Graphics.FromImage(result); 
     g.Clear(color); 
     int x = (result.Width - image.Width)/2; 
     int y = (result.Height - image.Height)/2; 
     g.DrawImage(image, new Point(x, y)); 
     g.Dispose(); 
     return result; 
    } 

我使用保存的圖像:resultimage.save(fileName);

我與尺寸的圖像5MP進行了測試。並將圖像保存到磁盤。但是有一個錯誤。

結果在其左側和頂部有一個邊框。圖像似乎被放大。例如,保存的圖像會遺漏其中的一部分(從正確的尺寸和底部)。

我做錯了什麼?

在此先感謝。

+0

也許你運行這種方法負尺寸參數? – JleruOHeP

回答

2

當輸入位圖的分辨率與您的視頻適配器的分辨率不匹配時,會出現這種情況。你可以用調試器看到的東西。添加手錶image.HorizontalResolutionresult.HorizontalResolution。你只會偶然得到一場比賽。 DrawImage(圖像,點)將重新縮放圖像以使分辨率匹配,以便圖像的外觀尺寸與設計位圖的機器上的尺寸相同。

您可以使用Graphics.DrawImage(Image,Rectangle)重載來解決此問題,因此您可以直接控制圖像的最終大小。修復:

g.DrawImage(image, new Rectangle(x, y, image.Width, image.Height)); 
+0

你是對的,它的工作就像一個魅力!謝謝! –