だから私たちはイメージを持っています。絶対に見なければならない線を描きたい。では、各点で描画する必要のある表面に対して反転した色で線を描画するにはどうすればよいでしょうか。
3 に答える
XOR トリックは自明に異なります。ただし、人間の目の働きを完全に無視しているという理由だけで、視覚的に最も明確ではありません. たとえば、明るいグレーでは、飽和した赤色は視覚的に非常に明確です。
色を HSV に変換し、彩度 S を確認することをお勧めします。低い場合 (グレースケール)、赤いピクセルを描画します。彩度が高い場合、色相は非常に明白で、白または黒のピクセルが目立ちます。元のピクセルの V が高い場合は、黒 (V=0) を使用します。元のピクセルの V が低い場合 (暗い飽和色)、白を使用します。
前に提案したように、LineIterator メソッドを使用できます。
(ところで、XOR トリックにもかなり悪いケースがあります。0x7F ^ 0xFF = 0x80。これは非常に見にくいです)
LineIteratorを使用し、各ピクセルのカラー値を手動でXORします。
これは私の頭のてっぺんからのもので、私はc ++開発者ではありませんが、線を別の画像に描画してから、反転ブレンドモードを模倣することができるはずです...基本的には「ネガティブ」を取得する必要があります/ピクセルの背後にある反転色。これは、最大色値から線の下の色を引くことによって得られます。
何かのようなもの:
uint invert(uint topPixel, uint bottomPixel) {
return (255 - bottomPixel);
}
色が0から255であるか、0.0から1.0であるかはわかりませんが、うまくいけば、これがアイデアを示しています。