dポイントプレゼントキャンペーン実施中!

MFCでbitmapを背景にしてstaticテキストを透過させる方法
VisualStadio2005
MFC
ダイアログベースでプログラムを作成しています。

bitmapをPictureControlで配置し、その上にStaticControlを配置して
画像の上に文字が表示されるようにしたいのですが、
Staticの背景を透過させて、下の画像を表示されることができません。

OnCtlColor()でstaticにSetBkMode(TRANSPARENT)を設定すると、
Dialog自体の色が出てきてしまいます。
どうかご教示お願いいたします。

A 回答 (2件)

>TABオーダ変更(StaticCtrl>PictureCtrl)とすると、


>Bitmap上にStaticテキストが表示されます。
>テキストの周りの白色(Staticの背景)を透明にしたかったので、
>OnCtlColorでSetBkMode( TRANSPARENT )を設定したのですが、
>テキスト周りの色がDialogの背景色になってしまいます。

書いたコードでやってもTABオーダ変えるだけでも
同じ結果になるんじゃないですか? ってことを言いたかっただけです

手元の環境でちゃんと確認してみました
結果ちょっと嘘かいてました(Textのみを自前で表示では実現できませんでした)

こちらで実行した状況としては以下のようになります
DialogにはBitmap表示用のコントロールとしてフレームコントロールを配置
BitMap読み込みイベントとしてボタンコントロール配置

ボタンイベントにてBitmapを読み込み再表示かけた所(PAINTイベント発生させた)
普通に表示できました(VC6で確認 添付テスト画像)
起動時の画面とBitmap読み込み表示後の画面です
(12344 と赤丸と  Bitmapを  自前で表示している形となります)
「MFCでbitmapを背景にしてstat」の回答画像2
    • good
    • 1

>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上に文字を置くということができないのでしょうか?

補足日時:2010/10/03 12:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A