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

閲覧ありがとうございます。デバイスコンテキストに関して2つの
質問があります。

1)矩形描画の際に背景色の反転色を設定したければSetROP2で
 R2_NOTを指定します。このような「背景色の反転色を設定する」と
 いう処理をTextOutで出力される文字に対して行いたいのですが
 何か方法はあるでしょうか。

2)同一の領域に、それぞれ独立した2つの矩形が描けるように実装
 しています。それぞれに対してR2_NOTを設定しており、そのため、
 2つの矩形が重なると線が消えてしまいます。(反転の反転、のため)
 これを回避し、重なった部分は一方のR2_NOTだけが作用するように
 したいのですが、なにか方法はありますでしょうか。 

よろしくお願いいたします。

環境はWindowsXP, VC2005++ &MFC です。

A 回答 (1件)

1)


今、確かめられる環境にないのですが、DrawTextだとできるかもしれません。
しかし、文字の境界部分にアンチエイリアスがかかっているとうまくいかないと思います。
確実な方法は、メモリデバイスコンテキストにビットマップを選択して文字を描画し、そのビットマップをBitBltなどで演算しながらコピーする方法です。(ラスターオペレーションにSRCINVERTを指定すればよかったと思います)

2)
CRgnの機能で2つの矩形を合成したリージョンを作成して、CDC::InvertRgnを使うとかでしょうか。
1)の方法と同様に、2つの矩形を塗りつぶしたビットマップを作成して、コピー時に演算してもいいでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

実は、質問をしたあとに、この質問に関する案件が流れてしまい、すっかり忘れて
しまっていました。ただ、今後、同じような場面に遭遇することもあるかと思います
ので、そのときのために参考にさせていただきます。

ありがとうございました。

お礼日時:2011/05/07 10:11

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