2012-01-14 141 views
5

聲明這是無法隱式轉換類型「爲System.Drawing.Image」到「System.Drawing.Bitmap'`

private Bitmap img1 = null; 
private Bitmap img2 = null; 

圖像將從中選擇打開文件對話框後推杆的位圖。
所選圖像被放置在一個數組中。

imgName = openFD.FileNames; 

然後按鈕1顯示這些圖像。

pictureBox1.Image = Image.FromFile(imgName[0]); 
pictureBox2.Image = Image.FromFile(imgName[1]); 

我更換Button1的代碼與此

img1 = Image.FromFile(imgName[0]); 
img2 = Image.FromFile(imgName[1]); 

但出現錯誤

無法隱式轉換類型 '爲System.Drawing.Image' 到 'System.Drawing.Bitmap'

我會嘗試將代碼更改爲img1 = Bitmap.FromFile(imgName[0]);。但仍然有相同的錯誤。
任何建議如何糾正或做到這一點的權利?

+1

雖然位圖始終被視爲圖像,但圖像不一定是位圖。它爲未來的其他類型的圖像提供支持。因此,您不應該嘗試強制映像成爲位圖。 – 2012-01-14 08:25:41

回答

7
img1 = new Bitmap(imgName[0]); 
img2 = new Bitmap(imgName[1]); 
2
img1 = (Bitmap) Image.FromFile(imgName[0]); 
img2 = (Bitmap) Image.FromFile(imgName[1]); 

由於錯誤消息說,你不能含蓄做到這一點,你需要明確地將它轉換爲Bitmap

編輯

基礎上的評論下面,我建議要麼去icktoofay的答案即使用位圖的構造函數,或者如果您可以直接使用Image類而不是使用Bitmap,那麼您也可以使用該類

+3

你不能隨意將東西投射到任何你想要的東西上。這是編程,而不是魔術。 「位圖」從「圖像」繼承,但不是相反。這意味着你不能將一個'Image'對象隱式轉換爲'Bitmap'對象。鑄造只是告訴編譯器閉嘴,它不能解決問題。 – 2012-01-14 17:03:00

+0

那麼在這裏什麼是正確的方式。使用位圖構造函數或直接使用Image類?我想正確的方法是使用圖像,除非你確定上傳的文件是位圖。你怎麼看? – 2012-01-14 17:18:55

+0

很難說。如果你需要一個'Bitmap',那麼你需要創建一個'Bitmap'類的實例,可能使用構造函數。否則,將您分配的變量('img1'和'img2')聲明爲'Image'類的對象,並且問題消失。關鍵是演員們很少是正確的答案。編譯器試圖警告你潛在的問題:你應該聽取它的建議。 – 2012-01-14 17:20:41

相關問題