-1

Java アプリケーションに使用しているコードのスニペットがあります。青に等しい 0xFF の 16 進値を、できれば RGB 値で表される別の色に置き換えようとしていますが、これは可能ですか?

void trailBlurEffect(int blendAmount, PGraphics buffer) {
   for (int i = 0, y = 0; y < buffer.height; y++) {
     for (int x = 0; x < buffer.width; x++, i++) {
       buffer.pixels[i] = 0xff000000 | (( buffer.pixels[i]  & 0xFF) * blendAmount) >> 8;
     }
   }
   nodeBuffer.updatePixels();
}

編集: 別の色を書き込もうとしていますが、たとえば 0xFF(青) を赤に相当する 16 進値 = 0xFF0000 に置き換えても、キャンバスは何も描画しません。私のコードはこの例から来ています: openprocessing.org/sketch/52388

4

2 に答える 2

1

あなたが達成しようとしていることはかなり不明です。RGB カラーは、赤、緑、青の値の 3 つの異なる数値として指定されます。各値の範囲は 0 ~ 255 です。0xFF は RGB 値ではなく、いずれかの色を表す値です。完全な RGB カラーを取得するには、0xFF0000 などを使用する必要があります。いいえ、魔法のように 0xFF を青に変えることはできません。他の色の値も知っておく必要があります。3 つの値を取り込んで、そこから色を作成できます。IE は、rValue、gValue、および bValue を取り込んで、それらをすべてくっつけて、0xRRGGBB の従来の RGB 形式を取得します。

お役に立てれば!

于 2012-11-08T22:32:31.633 に答える
1

私はバイナリ数学を知りませんが、これはで行われていることだと思います

  buffer.pixels[i]  & 0xFF

0xFF は、buffer.pixels[i] に適用されるマスクです。したがって、これは必要な色を得る方法ではありません。draw() で ellipse() の直前に fill(wantedColor) を呼び出してみることができますが、著者が指摘したページで述べたように、トレイルでは青のチャネルのみを使用したため、トレイルはまだ青になると思います。

于 2012-11-09T02:37:31.650 に答える