2010-11-24 15 views

答えて

2

LineIteratorを使用し、各ピクセルのカラー値を手動でXORします。

1

これは私の頭の上から来たものですが、私はC++の開発者ではありませんが、可能であれば 別のイメージに行を描画して反転モードを模倣する必要があります。ピクセルの後ろにある「負の/反転した色」。最大の色の値から色を引いて、線を引きます。以下のような

何か:

uint invert(uint topPixel, uint bottomPixel) { 
      return (255 - bottomPixel); 
} 

色は0から255までまたは0.0から1.0までであれば、うまくいけば、これは考え方を示してどのようにわかりません。

+1

、最良のオプションは、代わりに値をXOR演算することです。 –

+0

絶対に:)、ありがとう –

3

XORトリックは非常に異なります。それは人間の目がどのように働くかを完全に無視しているからといって、視覚的に最も明瞭ではありません。例えば、ライトグレーでは、飽和赤色は視覚的に全く異なる。

色をHSVに変換し、彩度Sを確認したい場合があります。低い場合(グレースケール)、赤色のピクセルを描画します。彩度が高い場合は、色相がはっきりしており、白または黒のピクセルが目立ちます。元のピクセルのVが高い場合は黒(V = 0)を使用します。元のピクセルが低いV(暗い飽和色)の場合は白を使用します。

前述のようにLineIteratorメソッドを使用できます。

は(ところで、XORトリックがあまりにもかなり悪い例を持っている。0x7Fのは^の0xFF = 0x80と。それは見えにくい血まみれだ)これは本当にミッドグレーでは動作しません

+0

0x80でXORすると、バイトは正確に128だけ変化します。 – yingted

関連する問題