- 締切済み
MFCでbitmapを背景にしてstaticテキストを透過させる方法
MFCでbitmapを背景にしてstaticテキストを透過させる方法 VisualStadio2005 MFC ダイアログベースでプログラムを作成しています。 bitmapをPictureControlで配置し、その上にStaticControlを配置して 画像の上に文字が表示されるようにしたいのですが、 Staticの背景を透過させて、下の画像を表示されることができません。 OnCtlColor()でstaticにSetBkMode(TRANSPARENT)を設定すると、 Dialog自体の色が出てきてしまいます。 どうかご教示お願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- koi1234
- ベストアンサー率53% (1866/3459)
>TABオーダ変更(StaticCtrl>PictureCtrl)とすると、 >Bitmap上にStaticテキストが表示されます。 >テキストの周りの白色(Staticの背景)を透明にしたかったので、 >OnCtlColorでSetBkMode( TRANSPARENT )を設定したのですが、 >テキスト周りの色がDialogの背景色になってしまいます。 書いたコードでやってもTABオーダ変えるだけでも 同じ結果になるんじゃないですか? ってことを言いたかっただけです 手元の環境でちゃんと確認してみました 結果ちょっと嘘かいてました(Textのみを自前で表示では実現できませんでした) こちらで実行した状況としては以下のようになります DialogにはBitmap表示用のコントロールとしてフレームコントロールを配置 BitMap読み込みイベントとしてボタンコントロール配置 ボタンイベントにてBitmapを読み込み再表示かけた所(PAINTイベント発生させた) 普通に表示できました(VC6で確認 添付テスト画像) 起動時の画面とBitmap読み込み表示後の画面です (12344 と赤丸と Bitmapを 自前で表示している形となります)
- koi1234
- ベストアンサー率53% (1866/3459)
>OnCtlColor()でstaticにSetBkMode(TRANSPARENT)を設定すると、 >Dialog自体の色が出てきてしまいます。 わざわざプログラムコード書かなくても TABオーダ変更するだけでこうなるのではないかと思います でもってコントロール配置のパターンではご希望のことはできなかったような気がします PAINTイベントで TextOut するという方法ではだめでしょうか?
補足
ご回答ありがとうございます。 TABオーダ変更(StaticCtrl>PictureCtrl)とすると、 Bitmap上にStaticテキストが表示されます。 テキストの周りの白色(Staticの背景)を透明にしたかったので、 OnCtlColorでSetBkMode( TRANSPARENT )を設定したのですが、 テキスト周りの色がDialogの背景色になってしまいます。 >PAINTイベントで TextOut するという方法ではだめでしょうか? OnPaintでTextOut()を試してみましたが、 Pictureコントロール描画前にOnPaintが実行されるようで、 TextOutで描画した文字にPictureが載るようになってしました。 Pictureコントロールを使わずに、 CBitmapのインスタンスにリソースをLoadBitmap()して、 OnPaintで描画してみましたが現象が変わりません。 StaticにSetBkMode( TRANSPARENT )を設定する方法では、 Dialogの背景色以外をすべて透過してしまうため、 Bitmap上に文字を置くということができないのでしょうか?