imageクラスについて への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 デフォルト  (社会人) 投稿日時 2009/7/14 16:30:51
brv さん、  よねKENさん、詳しい説明ありがとう。感謝します。
投稿者 よねKEN  (社会人) 投稿日時 2009/7/14 02:18:41
System.Drawing.Imageは抽象クラスで、その派生クラスには、
・System.Drawing.Bitmap というビットマップ画像(≠拡張子がbmpの画像)を現すクラス、
・System.Drawing.Imaging.Metafile というベクター画像を現すクラスがあります。
Imageクラスが抽象クラスであるのに対して、BitmapやMetafileは具象クラスといいます。

ビットマップ画像は、ドットの集まりで表現する形式の画像で、
ベクター画像は、線の両端の座標、曲線の曲がり具合、太さ、色などの形状で表現する形式の画像です。

BitmapクラスやMetafileクラスは内部の表現形式を規定した具体的な画像を現しているのに対して、
Imageクラスはより抽象的な意味での画像を現すクラスになっています。
画像をどのように表現するのかをImageクラスは知りませんので、Imageクラスのインスタンスは生成できません。

なぜこのようになっているか?と聞かれれば、設計者がそのように設計したから、です。

ちなみに、Image.FromFileメソッドやImage.FromStreamメソッドは、
指定した画像によりBitmapクラスかMetafileクラスのインスタンスを生成して返します。



投稿者 brv  (中学生) 投稿日時 2009/7/13 23:39:35
Imageクラスには、インスタンスを作成するためのメンバがあります。
ファイルから読み込むとしたらこんな感じ↓
Dim img As Image = Image.FromFile("C:\Sample1.bmp")


Bitmapクラスを使う手もあります↓
Dim img As Image = New Bitmap("C:\Sample1.bmp")
投稿者 デフォルト  (社会人) 投稿日時 2009/7/13 22:57:41
VB2008です。
最近、グラフィック関係に興味をもって学んでいます。

愚問かもしれませんが、imageクラスから直接インスタンスを作成できないのはなぜなのですか?
(そういうきまりじゃ)といわれればそうだと思うのですが