Imageクラスとクラスの違いがよくわかりませんBitmap。今、私はBitmapからの継承を知っていますが、私Imageが理解していることから、両方が非常に似ています。誰でもこれに光を当てることができますか?
3 に答える
Bitmap クラスは Image クラスの実装です。Image クラスは抽象クラスです。
Bitmap クラスには、さまざまなパラメーターから Bitmap オブジェクトを構築する 12 のコンストラクターが含まれています。別のビットマップと画像の文字列アドレスからビットマップを構築できます。
詳細については、この包括的なサンプルを参照してください。
正直なところ紛らわしいコードで行われたことを見たので、これは明確化です-次の例は他の人を助けるかもしれないと思います.
他の人が前に言ったように - Bitmapは Abstract Imageクラスから継承します
Abstract は事実上、その New() インスタンスを作成できないことを意味します。
Image imgBad1 = new Image(); // Bad - won't compile
Image imgBad2 = new Image(200,200); // Bad - won't compile
ただし、次のことができます。
Image imgGood; // Not instantiated object!
// Now you can do this
imgGood = new Bitmap(200, 200);
次の操作を行った場合、同じビットマップ オブジェクトと同じように imgGood を使用できるようになりました。
Bitmap bmpGood = new Bitmap(200,200);
ここで良い点は、Graphicsオブジェクトを使用して imgGood オブジェクトを描画できることです。
Graphics gr = default(Graphics);
gr = Graphics.FromImage(new Bitmap(1000, 1000));
Rectangle rect = new Rectangle(50, 50, imgGood.Width, imgGood.Height); // where to draw
gr.DrawImage(imgGood, rect);
ここで、 imgGoodは任意のImage オブジェクト (Bitmap、Metafile、または Image から継承したその他のもの) にすることができます。
Image は、任意の image への抽象的なアクセスを提供し、Image の実装に論理的に適用できる一連のメソッドを定義します。特定の画像形式や実装に制限されていません。Bitmap は、Windows GDI ビットマップ オブジェクトをカプセル化するイメージ抽象クラスへの特定の実装です。Bitmap は、GDI ビットマップ オブジェクトを中継する Image 抽象クラスへの特定の実装です。
たとえば、Image クラスから継承して抽象メソッドを実装することにより、Image 抽象への独自の実装を作成できます。
とにかく、これは OOP の単純な基本的な使い方であり、理解するのは難しくありません。