2013-10-30 21 views
11

我很困惑System.Drawing.ImageSystem.Drawing.Bitmap之間有什麼不同System.Drawing.Image和System.Drawing.Bitmap有什麼區別?

有人可以解釋這兩種類型之間的主要區別嗎?

爲什麼要使用System.Drawing.Bitmap而不是System.Drawing.Image?

+3

http://stackoverflow.com/questions/946926/image-vs-bitmap-class 請檢查這一點... –

+1

從OO的角度來看,位圖'是一個'圖像。 – BeemerGuy

回答

12

Bitmap繼承:

System.Drawing.Bitmap : System.Drawing.Image 
{ } 

Image是一個抽象類,這意味着:

抽象修飾符指示的東西被修改具有丟失或不完全實現。

Bitmap是密封類,這意味着:

當應用於一類,密封改性劑防止從它繼承其他類。

請參閱以下內容:

Bitmap bmp = new Bitmap(filename); // Works 
Image img = new Image(); // The compiler says: "Cannot access internal constructer 'Image' here. 

這是因爲Image並不意味着使用這種方式。 它只提供了Bitmap類的功能。因此總是使用Bitmap而不是Image

+5

如果我可能會添加 - 不要害怕將一個'Bitmap'類型的變量傳遞給一個將'Image'作爲參數的函數...因爲'Bitmap'是一個'Image',它會接受它。例如,'g.DrawImage(mybitmap,0,0)'對'Bitmap'類型的'mybitmap'有效(在這裏,'g'是類型'Graphics','DrawImage'是'Image'作爲參數)。 – BeemerGuy

4

我不確定你的意思有什麼區別?

System.Drawing.ImageSystem.Drawing.Bitmap的基類。

System.Drawing.Image也是抽象類,所以你不能創建它的實例。您必須僅創建System.Drawing.Bitmap的實例。

Image.FromFile,Image.BlahBlah ...只返回您的實例Bitmap

2

作爲MSDN文檔明確指出約System.Drawing.Image

一個抽象基類,爲位圖提供的功能和圖元文件下降類。

所以你不能比較它們。 System.Drawing.Bitmap類是抽象類System.Drawing.Image的具體實現。

1

圖像是表示柵格圖像的基本抽象類。位圖是基於GDI +的抽象類的一個實現。從Image