ビットマップの上に線をひきたい – プログラミング – Home

ビットマップの上に線をひきたい
 
通知
すべてクリア

[解決済] ビットマップの上に線をひきたい


kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

お世話になっています。
Win2000,VC6,MFC,SDIの環境です。
Viewの基本クラスにCFormViewを選択しました。

リソースエディタでビットマップをクライアント領域いっぱいに
はりつけています。
OnDraw()で線をひいているのですが、ビットマップがあるせいなのか
線が見えません。ビットマップのタブオーダーは1にしています。

どうすれば線がビットマップより上になるでしょうか?
(線が見えるようになるでしょうか?)

ご存知のかた、ご教授よろしくお願いします。


引用未解決
トピックタグ
Shimura
 Shimura
(@Shimura)
ゲスト
結合: 22年前
投稿: 36
 

リソースエディタで貼り付けているというコトは、
そのビットマップはスタティックコントロール(ピクチャーコントロール)上
にあって、OnDraw 内で引いている線(LineTo あたりか)は、ダイアログ上
にある。(スタティックコントロールの下に線を引いているコトになる。)
よって見えない。

・・・ってコトかな。

ならば、OnDraw 内でビットマップもダイアログに直接描画すれば
いいかも。(この場合、スタティックコントロールは不要)
あるいは OnEraseBkGnd 内で。


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

Shimuraさん レスありがとうございます。

>ならば、OnDraw 内でビットマップもダイアログに直接描画すれば
>いいかも。(この場合、スタティックコントロールは不要)

そう思ってやってみようと思っているのですが
コンボボックスも配置してあるので、ビットマップを描画したら
コンボボックスが見えなくなってしまうのではないかと
心配しています。

>にあって、OnDraw 内で引いている線(LineTo あたりか)は、ダイアログ上
>にある。(スタティックコントロールの下に線を引いているコトになる。)

スタティックの上に描画することは不可能なのでしょうか?


返信引用
Shimura
 Shimura
(@Shimura)
ゲスト
結合: 22年前
投稿: 36
 

>心配しています
心配するお気持ちはわかりますが、とりあえずはやってみましょう。
ダメだったら「ああ、いい勉強したな」と思えばいいです。

・・・つうか、この答はすでにでてますよね。

CxxFormView::OnDraw() でスタティックコントロール上に線をのばせない
のと同じように、コンボボックス上にビットマップはかぶりません。

で、ここから先は一般的なお話。
見た目にはひとつウィンドウ(ダイアログ)ですけど、そのクライアント領域は、
実際にはいくつもの部品(ウィンドウ)で構成されています。
これがウィンドウズのウィンドウ「ズ」たる所以のひとつなわけです。

でもって、各ウィンドウはそれぞれ固有のデバイスコンテキストハンドル(HDC)
を持っています。ウィンドウハンドル(HWND)がそれぞれのウィンドウで固有ある
ように。ですから、ウィンドウ(A)のデバイスコンテキストハンドルを使って
ウィンドウ(B)に描画することはできません。

逆に云えば、スタティックコントロール(これもウィンドウ)のデバイス
コンテキストを使えば、「スタティックの上に描画すること」も不可能では
ないです。(MFCだと HDC は CDC 内に、HWND は CWnd 内に取り込まれて
ますから、SDK プログラミングのご経験がなければ、ハンドルという言葉には
なじみが浅いかな? 同音異語は結構あるけども。(笑))

ただし、リソースエディタを使ってビットマップを貼り付けていると、
スタティックコントロール上で「ビットマップを描画する」という行為が
すでにシステムによってなされているわけですから、これと線をひく行為と
の関連性を考慮しないと両立しないかもしれません。

なもんで、そういうコトをいろいろと考えながらコーディングしていくと
頭のほうがスパゲティ状態になりかねないので、もし僕がやるとすれば、
「ビットマップ」も「線」も、ダイアログ上に直接描画するでしょうね。


返信引用
Shimura
 Shimura
(@Shimura)
ゲスト
結合: 22年前
投稿: 36
 

逆に kai さんに質問です。
>リソースエディタでビットマップをクライアント領域いっぱいに
>はりつけています。
とのことですが、そのウィンドウ(メインウィンドウ)はサイズ変更不可の
ウィンドウなのですか?

サイズが変わったら、ウィンドウの右と下にダイアログの地の色(Windows2000 という
コトなので、標準だと灰色かな)が見えてきませんか?


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

Shimuraさん

>「ビットマップ」も「線」も、ダイアログ上に直接描画するでしょうね。

勉強して、やってみます。

>とのことですが、そのウィンドウ(メインウィンドウ)はサイズ変更不可の
>ウィンドウなのですか?

サイズは変更できません。

またわからないことがあれば質問します。
ありがとうございました。


返信引用
Shimura
 Shimura
(@Shimura)
ゲスト
結合: 22年前
投稿: 36
 

>サイズは変更できません。
画面のDPIを変更してしまうと、サイズも狂ってくるような気が・・・。
考えすぎかな。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました