イメージコントロールに拡張子が .dib のイメージファイルを読み込みたいTipImageコントロールにファイルを実行時に読み込む場合 Image1.Picture.LoadFromFile('XXXX.bmp'); などとすれば、Imageコントロールはファイルの拡張子からグラフィックファイルの形式を自動的に判断して読み込んでくれます。ところが、たまにビットマップファイルの中に拡張子が .dib のものが有りますが、これを読み込むことはできません。 しかし、以下のようにすれば読み取れるようになります。
1) アプリケーション開始時に読み取れる拡張子を追加する procedure TForm1.FormCreate(Sender: TObject); begin TPicture.RegisterFileFormat('dib', 'ビットマップ', TBitmap); end; 2) ユニットの初期化部に読み取れる拡張子を追加する initialization TPicture.RegisterFileFormat('dib', 'ビットマップ', TBitmap); こうすると Image1.Picture.LoadFromFile('xxxx.dib'); で拡張子が '.dib'のビットマップファイルが読めるようになります。 また、適当な設計時パッケージのユニットの初期化部に上のコードを加えると、設計時にImageコントロールのコンポーネントエディタ(Imageコントロールをダブルクリックした時表示されるダイアログ)で拡張子が '.dib'のビットマップファイルを読み込むこともできるようになります。 解説Imageコントロールがファイルを読むとき、TPicture.LoadFromFile メソッドが使われます。このメソッドは Graphics Unit 内の FileFormatList (実装部に宣言されているので、アプリケーションからは見えない変数)を見て、 ファイルの拡張子から、そのファイルを読み込むことができるクラスを決定します。 TPicture はファイルを読み込むのに TGraphic から派生したクラスを使います。デフォルトでは FileFormatList は以下のように設定されています。
が加わります。 TPictureクラスのRegisterFileFormatクラス メソッドは FileFormatList に新しい拡張子と クラスを登録します。個別の拡張子の削除はできません。但し、UnRegisterGraphicClass を使えば、ファイルを読み込むクラス単位で拡張子を削除することはできます。 TGif, TJpeg 等、様々なファイルフォーマットをサポートする TGraphic から派生するクラスを自作して拡張子とともに登録すれば、 イメージコントロールが読み込むことのできるファイルの種類を いくらでも増やすことができます。
|