DLG ピクチャボックス外の描画を抑制する方法に関して – プログラミング – Home

DLG ピクチャボックス外の描画を抑制...
 
通知
すべてクリア

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


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

どうもこんばんは

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

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

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

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

w2k MFC DLG

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

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

そこで,質問です.

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

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

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

merlo


引用解決済
トピックタグ
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

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

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


返信引用
中級者X
 中級者X
(@中級者X)
ゲスト
結合: 23年前
投稿: 26
 

1.リージョンを使えばいいのではないでしょうか?

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


返信引用
くたくた
 くたくた
(@くたくた)
ゲスト
結合: 23年前
投稿: 119
 

(CDC::)IntersectClipRect()ではみ出た所をクリップ出来ます。
詳細はMSDNを参照して下さい。


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

中級者X 様 くたくた 様

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

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

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


返信引用
くたくた
 くたくた
(@くたくた)
ゲスト
結合: 23年前
投稿: 119
 

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


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

爆 やってみます


返信引用
ワルツ
 ワルツ
(@ワルツ)
ゲスト
結合: 23年前
投稿: 21
 

この場合のGetClientRectは、
this->GetClientRectと同じですよね。
だから、複数ピクチャボックスがある場合には,
そのthisの部分を変えるだけでできるでしょう。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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