掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
OELオブジェクト型の画像をVBで表示するには・・・ (ID:83009)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
OLEオブジェクトフィールドに格納されたバイナリから、ビットマップデータを 切り出すという手法が、Knowledge Base で公開されています。 http://support.microsoft.com/default.aspx?kbid=175261 しかし、OLEオブジェクトの構造は、一般には公開されていませんので、 この手法を使ってうまく画像を取り出せるという保証はありません。 つまり現実的には、「Dataコントロール + OLEコンテナコントロール」という 選択肢を選ぶ事になります。 ただし、データの持ち方を変えれば、DataEnvironmentを使って 画像を表示する事も可能です。 方法1: mdbには、「画像ファイルのフルパス」を格納しておき、実行時には LoadPictureステートメントを併用して、画像を読み込むという手法。 この方法では、mdbとは別にHDD上に画像を保存する事になります。 mdbにバイナリデータを埋め込むと、ファイルサイズが肥大化してしまうため、 mdbファイルの肥大化を嫌う人などには、比較的、広く使われている手法です。 方法2: OLEデータとして埋め込むのではなく、画像の生のバイナリデータを mdbに格納するようにし、それを一時ファイルとしてHDDに保存した後、 LoadPictureを使って読み込むようにする手法。 一時ファイルを使わなければいけないのが難点ですが、格納されるデータは OLEオブジェクトとして埋め込まれた物ではなく、生のバイナリデータなので、 OLEとして埋め込まれた場合に比べると、データの復元が容易となります。 なお、バイナリデータの画像ファイルへの読み書きには、VBのGet#/Put#ステートメント、 mdbファイルへの読み書きには、DAO/ADOのGetChunk/AppendChunkメソッドが利用できます。 方法2': 方法2と同様、mdbには生データを保存しておきますが、表示時には 一時ファイルとして展開し、それをLoadPictureで読み込むのではなく、 OleCreatePictureIndirect APIなどを使って、バイナリデータを 直接、「Pictureオブジェクト」に変換する手法。 APIを使うので、コードは複雑になります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.