2009-08-05 40 views
0

錯誤我設法得到這樣的東西在另一個項目中工作,但不是在我目前。 即使我在調用保存之前處理了b位圖,文件也會鎖定並且無法在保存時被覆蓋。任何想法,我可能做錯了什麼?GDI + Bitmap.Save

Bitmap b = (Bitmap)Image.FromFile("image.png"); 
Bitmap bClone = (Bitmap)b.Clone(); 

    // modify bClone here.. 

b.Dispose(); 
b = null; 
GC.Collect(); 

bClone.Save("image.png"); 
+0

僅供參考,Dispose()將立即釋放您的位圖的內存。對GC.Collect()的調用是不必要的,並且通常會被忽略。 – 2009-08-05 21:48:26

+0

謝謝,我不知道。 – CodeSpeaker 2009-08-06 07:50:09

回答

1

「克隆」的方法不會做你想做的。您可以使用位圖的複製構造函數來創建包含相同像素的單獨圖像。

Bitmap bClone = null; 
using (Bitmap b = (Bitmap)Image.FromFile("image.png")) 
{ 
    bClone = new Bitmap(b); 
    // modify bClone here.. 
} 

bClone.Save("image.png"); 
bClone.Dispose(); 
+0

克隆方法有什麼作用? :) – 2009-08-05 21:42:13

0

使用FromFile你真的不能控制文件對象的生命週期。改爲嘗試FromStream。