2011-08-23 54 views
0

我有類似的東西 - 加載從文件picturebox1圖像:矩形內保存在圖片框

enter image description here

,然後再按下「SelectArea」後,我可以畫上加載圖片矩形:

enter image description here

最後在按下另一個按鈕「SaveArea」後,我想將img保存在創建的矩形內,因此我將圖像保存在我的驅動器中,如下所示:

enter image description here

如何編寫代碼,幫我做這最後一步 - >保存的矩形內?

Tnx。

回答

1

一新了合適的尺寸

位圖

然後創建一個圖形對象爲這個與Graphics.FromImage,然後使用生成的圖形對象上的DrawImage方法來繪製你的大圖像的部分到位圖。

最後保存的位圖對象與保存:

public static void SaveBitmapPart(System.Drawing.Image image, System.Drawing.RectangleF sourceRect, string pathToSave) 
{ 
    using (var bmp = new System.Drawing.Bitmap((int)sourceRect.Width, (int)sourceRect.Height)) 
    { 
     using (var graphics = System.Drawing.Graphics.FromImage(bmp)) 
     { 
      graphics.DrawImage(image, 0.0f, 0.0f, sourceRect, System.Drawing.GraphicsUnit.Pixel); 
     } 
     bmp.Save(pathToSave); 
    } 
} 

所以只是把它叫做:

SaveBitmapPart(picturebox1.Image, myRectangle, @"c:\Temp\Test.bmp"); 
+0

PS可以使用PictureBoxes-image屬性爲 「圖像」(第一個參數)爲這個小功能。 – Carsten

+0

Tnx,但我仍然有問題。當我在我的picturebox上選擇矩形 - 640x480,例如矩形(300x300),然後我保存的圖片爲300x300,但矩形內的所有內容都位於左上角,並且沒有拉伸 - 就像矩形內部的微img。 – Elfoc

+0

你沒有寫任何關於拉伸圖像的東西,也沒有你的示例sugguest - 總之它很容易 - 只需將DrawImage-Method更改爲可處理圖像拉伸的重載(只需查看MSDN文檔 - 非常好)當然你也必須爲你desiered大小的位圖) – Carsten