2013-10-30 18 views
11

私は混乱していますSystem.Drawing.ImageSystem.Drawing.BitmapSystem.Drawing.ImageとSystem.Drawing.Bitmapの違いは何ですか?

誰かがこの2つのタイプの主な違いを説明できますか?

System.Drawing.Imageの代わりにSystem.Drawing.Bitmapを使用する理由は?

+3

http://stackoverflow.com/questions/946926/image-vs-bitmap-class あまりにもこれを確認してください... –

+1

オブジェクト指向の観点からは、ビットマップは 'イメージです。 – BeemerGuy

答えて

12

Bitmap継承:

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

Image抽象クラスであり、これは意味:

をabstract修飾子が変更される事が欠落または不完全な実装を持っていることを示しています。

Bitmapが密閉クラスであり、これが意味する:クラスに適用

は、密封された改質剤は、そこから継承他のクラスのを防止します。

は、次を参照してください。

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

Imageがこの方法を使用することを意図していないためです。 これは、Bitmapクラスの機能を提供するだけです。

したがって、Imageではなく常にBitmapを使用してください。

+5

私が追加するかもしれない - 'Image'をパラメータとする関数に' Bitmap'型の変数を渡すのを恐れないでください。 '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のインスタンスのみを返します。 MSDNのドキュメントとして

2

は明らかにおよそSystem.Drawing.Imageを述べている:

ビットマップやメタファイルのための機能を提供する抽象基底クラスはクラスを降りました。

だから比較できません。 System.Drawing.Bitmapクラスは、抽象System.Drawing.Imageクラスの具体的な実装です。

1

イメージは、ラスタイメージを表す基本抽象クラスです。ビットマップは、GDI +に基づくこの抽象クラスの1つの実装です。 Imageから

関連する問題