2012-12-29 63 views
0

我有2圖像,OriginalImageTempImage如何重置圖像的形式

我使用此代碼在形式加載圖片:

this.DoubleBuffered = true; 
Temp= new Bitmap(2, 2); 
Original = new Bitmap(2, 2); 
Original=Temp; 

和改變溫度圖像(旋轉,裁剪等)

復位時,我加載原始圖像加載基本圖像中的窗體,但加載Temp圖像。

+0

我沒有一個C#編譯器在這裏,但我認爲您需要通過'Clone'方法或類似的方式將'Temp'複製到'Original',而不是'='。 '='太淺了,所以它們最終只是同一個對象,而不是彼此的副本。 –

+0

幹得好。你有什麼問題? –

+0

我添加了gdi +標記 – K3N

回答

2

問題是Bitmap是一類,而當你說Original = Temp,你告訴Original引用同Bitmap實例作爲Temp

您爲Original實例化的Bitmap已丟失並且將被垃圾收集,如果您丟棄其中一個,則兩者都將停止工作。

什麼你在最後一行所尋找的是Bitmap.Clone(),讓您創建臨時的副本,並存儲在原文:

this.DoubleBuffered = true; 
    Temp= new Bitmap(2, 2); 
    Original = (Bitmap)Temp.Clone(); 
+0

原文=(位圖)(Temp.Clone()) – Tilak

+0

好的,趕上,忘了ICloneable不是通用的... –