教えてクンモードです。
WindowsのAPI(GDI)で、ドローツールとかでよく見る「ラバーバンド」を実現するにはどうすればいいんでしょうか。
ラバーバンドといえばXOR、それにはSetROP2()、というところまではすぐにわかったのですが、ラバーバンドの線の色を制御できません。
もちろんXORで描画する以上、下にある色によって色は変わってしまいますが、少なくともウインドウの背景色の上での色くらい制御したいと思うのですが…
原理的に、ウインドウの背景色のビットパターンと描画したい色のビットパターンでXORを取ったもので、XORで描画すれば、背景色の上ではその色になるはずなのですが、背景色のビットパターンもPenのビットパターンも取得方法がわかりませんです。ビットパターンからPenを作る方法もわからないですし。
背景がデフォルトの白であれば、R2_NOTXORPENでうまくいったのですが、背景色に(SolidBrushであれ)色を指定するとやはり目的の色にはならないようです。
えらいひと、教えてくださいませ。
追記:関係ないっちゃないですが。
http://java.sun.com/j2se/1.3/ja/docs/ja/guide/2d/spec/j2d-intro.fm2.html
簡単なレンダリングシステムでは、基本的なブール演算だけで色の混合が行われます。 たとえば、ブール演算による合成規則では、ソース色の値とデスティネーション色の値の論理積 (AND)、論理和 (OR)、または排他的論理和 (XOR) を求めることが可能です。 このような方法には、いくつか問題があります。
いやまあ、そりゃそうなんですがね。