
MFCでbitmapを背景にしてstaticテキストを透過させる方法
VisualStadio2005
MFC
ダイアログベースでプログラムを作成しています。
bitmapをPictureControlで配置し、その上にStaticControlを配置して
画像の上に文字が表示されるようにしたいのですが、
Staticの背景を透過させて、下の画像を表示されることができません。
OnCtlColor()でstaticにSetBkMode(TRANSPARENT)を設定すると、
Dialog自体の色が出てきてしまいます。
どうかご教示お願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>TABオーダ変更(StaticCtrl>PictureCtrl)とすると、
>Bitmap上にStaticテキストが表示されます。
>テキストの周りの白色(Staticの背景)を透明にしたかったので、
>OnCtlColorでSetBkMode( TRANSPARENT )を設定したのですが、
>テキスト周りの色がDialogの背景色になってしまいます。
書いたコードでやってもTABオーダ変えるだけでも
同じ結果になるんじゃないですか? ってことを言いたかっただけです
手元の環境でちゃんと確認してみました
結果ちょっと嘘かいてました(Textのみを自前で表示では実現できませんでした)
こちらで実行した状況としては以下のようになります
DialogにはBitmap表示用のコントロールとしてフレームコントロールを配置
BitMap読み込みイベントとしてボタンコントロール配置
ボタンイベントにてBitmapを読み込み再表示かけた所(PAINTイベント発生させた)
普通に表示できました(VC6で確認 添付テスト画像)
起動時の画面とBitmap読み込み表示後の画面です
(12344 と赤丸と Bitmapを 自前で表示している形となります)

No.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上に文字を置くということができないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
ダイアログの一部を半透明化する C++(MFC)
C言語・C++・C#
-
MFC ポップアップメニューのチェック表示について
C言語・C++・C#
-
-
4
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
5
画面を強制的に再描画させる方法
C言語・C++・C#
-
6
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
7
MFCでOnPaintのタイミング
C言語・C++・C#
-
8
ボタン上にビットマップ、アイコンを貼り付ける方法
C言語・C++・C#
-
9
ビットマップ(bmp)形式で背景を透過にできる?
画像編集・動画編集・音楽編集
-
10
VC++ スタティックテクスト(Static Text)をダイアログ生成時に動的に変更したい
C言語・C++・C#
-
11
CStaticコントロールの静的イメージ描画
C言語・C++・C#
-
12
ダイアログボックスで指定したサイズどおり表示されない
C言語・C++・C#
-
13
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
-
14
CString型の文字列連結について
C言語・C++・C#
-
15
エディットボックスのフォントを変えたい
C言語・C++・C#
-
16
ラベル(スタティックテキスト)内での改行。
C言語・C++・C#
-
17
ボタンのオーナードローについて
C言語・C++・C#
-
18
MFCダイアログボックスを最前面に表示
C言語・C++・C#
-
19
VC++プログラムをつかったBMP画像の拡大縮小について
C言語・C++・C#
-
20
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# アプリ終了時に設定を記憶...
-
テキストボックス(VBA)でEnter...
-
エクセルの画像にツールチップ...
-
ACCESS2010 ActiveXコントロー...
-
ユーザーフォームに日付を表示...
-
VB2005 コードでのコントロー...
-
Enabled=Falseのテキストボック...
-
C#でユーザコントロールのプロ...
-
MFCでbitmapを背景にしてstatic...
-
マウスオーバーした範囲の文字...
-
MSFlexGrid
-
VC++でエクセルのような表
-
MSHFlexGrid および MSFlexGrid...
-
ADOのCursorLocationプロパティ
-
リストコントロールのデータの...
-
ListViewで1つを選択して詳細...
-
VB6でPNGファイルを扱うには?
-
DataGridViewで行の展開みたい...
-
コンボボックスのセンタリング
-
C#のプロパティ設定のコードに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
Wordテキストコントロールが未...
-
ユーザーフォームに日付を表示...
-
エクセルの画像にツールチップ...
-
C# TEXTが空白であるLABELは何...
-
VBからエクセルのテキストボ...
-
DataGridViewで行の展開みたい...
-
エクセル VBA ユーザーフォーム...
-
MSFlexGrid
-
コンボボックスの高さを変更し...
-
VB.NETで縦書表示をしたいので...
-
デザインモードを解除すると消...
-
Enabled=Falseのテキストボック...
-
ADOのCursorLocationプロパティ
-
PictureBoxの背景色変更(VB.NET)
-
VB6でLabelの最前面にText Box...
-
エクセル入力規制リスト行数
-
C# アプリ終了時に設定を記憶...
-
ListViewでのリスト表示(初歩...
-
MFCでbitmapを背景にしてstatic...
おすすめ情報