8

WindowsフォームでGDI+を使用して、ペンで描画し、宛先のピクセルカラーに基づいてカラーをブレンドできるようにしたいと考えています。

たとえば、線を引いてそれが黒のピクセルを通過する場合、それが見えるように明るい色(たとえば白など)にします。同じ線が白いピクセルを通過するときは、はっきりと見えるように、より暗い色(たとえば黒)にする必要があります。

GDI +でこれを行う方法はありますか?

4

3 に答える 3

3

Hans Passantが提案したように、現在キャンバスにあるものをテクスチャブラシの画像として使用してペイントし(正しく機能させるにはダブルバッファリングが必要になる場合があります)、を使用ColorMatrixしてキャンバスにペイントされる色を変更できます。

XORに似た色を反転させるカラーマトリックスがありますが、問題は、ミドルグレーでは機能しないことです。RGBを反転し、アルファをそのまま残すカラーマトリックスは次のようになります。

-1, 0, 0, 0, 0
 0,-1, 0, 0, 0
 0, 0,-1, 0, 0
 0, 0, 0, 1, 0
 1, 1, 1, 0, 1

遅いですが、似たようなものは、キャンバスを画像にコピーし、色が0.5より明るい場合、それ以外の場合は少し暗くする、少し明るくするなどのルールを使用して、ピクセルごとにその画像のピクセルを処理することです。次に、その処理された画像をテクスチャブラシとしてペイントします。これにより良い結果が得られますが、を使用するよりも大幅に遅くなりますColorMatrix

于 2013-01-18T21:26:45.647 に答える
1

ペンの色をXORしてみることができます。Paint.NETは、選択枠を使用してこれを実行し、任意の色で表示できるようにします。

于 2012-12-22T17:28:16.803 に答える
0

ああ、これはそれほど難しいことではないと思います。どこにいても自動的に色が変わるペンを作成できます。ペンの位置があるピクセルを読み取るだけで(例を参照)、Alphaコンポーネントを取得し、ペンの色がそれぞれ255/2より大きいか小さい場合は黒または白に設定します:)

于 2013-01-24T19:35:01.357 に答える