開発ブログ - FireMonkey の TBitmap と VCL の TBitmap

FireMonkey の TBitmap と VCL の TBitmap

カテゴリ : 
技術メモ » Delphi » 全般
執筆 : 
2014/10/16

FireMonkey にも VCL にも TBitmap というクラスがあり、 それぞれ VCL.Graphics, FMX.Graphics に入っています。
同じ名前なので同じようなものと思ってしまうのですが、だいぶ違うんです。

FireMonkey の TBitmap はビットマップをカプセル化したものです。
VCL の TBitmap はWindows ビットマップ (HBITMAP) をカプセル化しています。
FireMonkey の TBitmap の親は TInterfacedPersistent です。
VCL の TBitmap の親は TGraphic です。
つまり VCL の TBitmap は、TIcon や TMetafile, TJPEGImageの兄弟です。

FMX.Graphics.TBitmap

FireMonkey の TBitmap は CreateFromStream や CreateFromFile で、ファイルからビットマップデータを読み込むことができます。
(扱うことのできる画像形式は TBitmapCodecManager を参照)。

VCL.Graphics.TBitmap で画像ファイル読み込み?

VCL.Graphics.TBitmap の LoadFromFile は BMPファイルからの読み込みしかサポートしません。
VCL.Graphics.TBitmap に 様々な画像ファイルから画像を読み込みたい場合は TPicture を使います。


var
  Picture: TPicture;
  Bitmap: TBitmap;
begin
  Picture := TPicture.Create;
  Picture.LoadFromFile(AFilePath);
  Bitmap := TBitmap.Create;
  Bitmap.Width := Picture.Width;
  Bitmap.Height := Picture.Height;
  Bitmap.Canvas.Draw(0, 0, Picture.Graphic);
  ...
end;

TPicture は TGraphic のコンテナで、グラフィックを保持するために使用されます。
TGraphic はアイコン,ビットマップ,およびメタファイルなどのイメージを格納および表示するオブジェクトの抽象基本クラスですから、TPicture はこれらのグラフィックを統合的に扱うことができます。
なお、TPicture の親は TInterfacedPersistent です。
ちなみに FireMonkey には TPicture や TGraphic はありません。
FireMonkey はマルチプラットフォームですから当然ですが...

  • コメント (0)
  • トラックバック (0)

コメントの投稿

お気軽にコメントください : 投稿されたコメントは承認後に表示されます
プロダクツ

開発ブログ

Link

AD