DLG ピクチャボックス外の描画を抑制する方法に関して

[戻る]
merlo 2002/05/16(木) 22:42:58
どうもこんばんは

merloです(←これはHNです)
いつもお世話になっております.

皆々様のご協力により,研究用のソフトも
だいぶ完成の域に達してきました.
改めて御礼申し上げます.

完成した際には,何らかの手段で
紹介させていただこうかと思っています.

ところで,本題に入ります.

w2k MFC DLG

ピクチャボックスを設置して,TextOut SetPixel等を
実行すると,指定した座標値に意図したものが
表示されるのは,皆様も当然ご存知かと思いますが,
今回はそれに関する質問です.

例えば,TextOutにて表示するときに,
たまたまピクチャボックスの外にわずかに外れたところが
指定座標点になった場合,
ピクチャボックスの内外に関わらず,描画が行われます.

そこで,質問です.

1.ピクチャボックスの外に座標を指定した場合には,描画を実行しない.
  (ただし,工夫すればすでに実現可能ですが,関数処理を希望します)

2.ピクチャボックスに描画されたものを一括消去する方法

たびたびで,申し訳ありませんが,
どうぞよろしくお願い申し上げます.

merlo

merlo 2002/05/16(木) 22:46:26
>1.ピクチャボックスの外に座標を指定した場合には,描画を実行しない.
>  (ただし,工夫すればすでに実現可能ですが,関数処理を希望します)

(訂正)
1.ピクチャボックスの外にはみ出た描画内容は描画しない
  (ただし,工夫すればすでに実現可能ですが,関数処理を希望します)
    (つまり,テキストアウトで表示した文字列の最後尾がはみでたら,ちょんぎっ
   て,内側にあるものだけを表示)

中級者X 2002/05/16(木) 22:49:46
1.リージョンを使えばいいのではないでしょうか?

2.塗りつぶすのではダメということでしょうか?

くたくた 2002/05/17(金) 00:24:24
(CDC::)IntersectClipRect()ではみ出た所をクリップ出来ます。
詳細はMSDNを参照して下さい。

merlo 2002/05/17(金) 04:04:24
中級者X 様 くたくた 様

アドバイスありがとうございます.
以下のプログラムで無事修正することができました.
ありがとうございました.

CDC* pDC=m_pict.GetDC();
CRect rect;
GetClientRect(&rect);
pDC->IntersectClipRect(&rect);



これは,余談なのですが,
もし,ピクチャボックスが複数あったら,
GetClientRect(&rect);
は,どうなるのでしょうか.
クライアント領域が複数?あるのでは・・・
どの四角形をゲットするのか,ということで
少し疑問が残ります

くたくた 2002/05/17(金) 10:26:26
>もし,ピクチャボックスが複数あったら,GetClientRect(&rect);
>は,どうなるのでしょうか.
実験してみて下さい。5〜10分以内で結論が出ます。

merlo 2002/05/18(土) 00:17:08
爆 やってみます

ワルツ 2002/05/20(月) 11:41:38
この場合のGetClientRectは、
this->GetClientRectと同じですよね。
だから、複数ピクチャボックスがある場合には,
そのthisの部分を変えるだけでできるでしょう。

古いスレッドには追加発言できません。