イメージボックスへのビットマップの表示について(2)

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
メッセージ
作成者
jacoby
記事: 106
登録日時: 2006年6月02日(金) 18:20

イメージボックスへのビットマップの表示について(2)

#1 投稿記事 by jacoby »

イメージボックスへのビットマップの表示について(2)

メイン・ウインドウ上にスタティック・コントロールのイメージボックスを設置して、そこにビットマップ画像を表示させたいのですが、ウインドウのリサイズに伴ってイメージボックスのサイズが変わった時などにどうしてもビットマップ画像が拡大縮小されて表示されます。

これを解消するために(コントロールのサイズが変わっても画像が実寸のままでいてくれるように)、「SS_REALSIZEIMAZE」というスタイルをセットしてみたのですが依然拡大縮小されてしまいます。
SS_REALSIZEIMAGE 静的なアイコンまたはビットマップ コントロール (SS_ICON または SS_BITMAP のスタイルを持つ静的コントロール) が読み込まれたり描画されたりするときに、そのサイズが変更されないようにします。アイコンまたはビットマップが描画先の領域よりも大きい場合、そのイメージはクリップされます。
(※msdnより)
http://msdn.microsoft.com/ja-jp/library ... S.80).aspx

前出の質問「イメージボックスへのビットマップの表示について」でも同様のことをお聞きしたのですが、中々まだ当人の理解が甘く。。。
メイン・ウインドウのリサイズに合わせてコントロールのサイズを変更しないようにすれば拡大縮小もされないのですが、それではイメージボックスのフチに付けてある「クライアント・エッジ」も動かず、ウインドウのサイズによってはエッジが隠れたりして見た目上とても不自然になります。

先日、代わりに「SS_CENTERIMAGE」というスタイルをセットしてやってみたらこれは
画像を実寸のまま表示して、コントロールの大きさに合わせてエッジも表示してくれていることに気が付きました。(ただし画像は中央位置表示になってしまいます。もし画像がコントロールのサイズをはみ出る場合はクリップされます。)
SS_CENTERIMAGE: コントロールのサイズが変更されても、SS_BITMAPスタイルやSS_ICONスタイルを持つスタティックコントロールの中心点は変えないようにします。
(※ABヘルプより)

それならと同様に「SS_RIGHTIMAGE」でやってみたら、
SS_RIGHTIMAGE: コントロールのサイズが変更されても、SS_BITMAPスタイルやSS_ICONスタイルを持つスタティックコントロールの右下隅は変えないようにします。
(※ABヘルプより)
これは「無効な識別子です」とエラーになります。

msdnで調べてみると同じようなスタイルで「SS_RIGHTJUST」というのがあり
これでやってみると、
SS_RIGHTJUST SS_BITMAP または SS_ICON スタイルを持つ静的コントロールのサイズを変更した場合も、そのコントロールの右下隅の位置は固定されたままになるように指定します。新しいビットマップまたはアイコンを表示する場合、コントロールの上辺と左辺だけが調整されます。
(※msdnより)
何故かこれはまたもや「拡大縮小」されてしまいます。


以上のテストの結果では「SS_CENTERIMAGE」が自分が思ったようなリサイズ時の動作をしてくれるのですが、ただしこれを「中央表示」ではなく基本的な「左上隅表示」でやりたいのです。

画像をイメージボックスに、リサイズ時も実寸のまま表示させるには
どうしたら良いでしょうか?


下にプログラムを。簡単なイメージ・ビューワのテストです。
AB4.24プロジェクトファイルで実行後「ファイル」メニューから何かの
ビットマップファイル(.bmp)を選択して下さい。
下記プログラム中、質問の該当部分は
「●ビットマップファイルの読み込み」サブ内にあります。
HSABP

#2 投稿記事 by HSABP »

イメージボックスのDCにBitBltしたらいいんじゃね?