テクニカルレシピ(Visual C++のレシピ)

Home>>Visual C++>>画像描画 LastUpdate: 2009-01-21

画像表示

画像表示の基本はビットマップ(.bmp)イメージです。
(jpegやgifを出すにはそれなりの知識が必要です。)
まずはビットマップの表示をマスターしましょう。

下のサンプルアプリでは、
Button1、Button2それぞれ別のビットマップ画像を表示します。
なおPictureControlには「CStatic」型の「m_pict」という変数を設定しています。
(ソースファイルはサンプルコードのImage1.zipにまとめています。)

まず表示するビットマップデータをリソースに追加しましょう。

自分で新規のビットマップを作る場合、
リソースビューのImage1.rcの上で右クリックし、「リソースの追加」→「新規選択」を選びます。
すると無地のビットマップが生成されるので、ペン等を使って自由な図柄を書き込みます。
ここではIDB_BITMAP1に日の丸を作成してみました。

すでにファイルにあるビットマップを呼び込むには、
「リソースの追加」→「インポート」として、画像ファイルを読み込んでください。
ここではIDB_BITMAP2にノートPCの画像を読み込んでいます。

各Buttonのイベントハンドラは下の通りです。

Button1のイベントハンドラ関数

初めはm_pictのデバイスコンテキストを取得し(@)、背景を白で初期化しています(A)。
そしてビットマップリソースを読み込むための変数(bmp)を宣言し(B)、
LoadBitmapによって変数にビットマップデータを入れています(C)。

そしてm_pictと互換性のあるデバイスコンテキスト(bmpDC)というのを作り(D)、
そのビットマップデータとしてbmpを設定します(E)。

最後にBitBltというAPIを使って、互換デバイスコンテキストの情報を
m_pictのデバイスコンテキストに転送しています(F)。

なおBitBltの最初の2つの数字は、転送する画面(ビットマップ画像)の左上頂点のx,y座標、
次の2つの数字は転送する画面の右下頂点のx,y座標です。
ここでは左上頂点を(10,10)にして、右下頂点を画像の大きさ分(48x48)に基づいて決めています。
他の引数は通常変える必要はありません。

複雑でわかりにくいですが、よく使う手順なので憶えておくことをお勧めします。
(理解しなくてもこの手順に従えば画像表示ができます。)

Button2のイベントハンドラ関数

Button2のイベントハンドラはButton1とほぼいっしょです。
読み込む画像がIDB_BITMAP2である点と(@)、
BitBltで転送するデバイスコンテキストのサイズだけが違います(A)。

このプログラムを実行し、Button1・Button2を押すと下のような表示が得られます。

 

図形描画:前項<< ページの先頭に戻る >>次項:ダイアログベース


このエントリーをはてなブックマークに追加