-1

我有一段用于 Java 应用程序的代码,我正在尝试将等于蓝色的 0xFF 的十六进制值替换为最好由 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(blue) 替换为红色的十六进制等效值 = 0xFF0000 我的画布什么也没画。我的代码来自这个例子:openprocessing.org/sketch/52388

4

2 回答 2

1

我不知道二进制数学,但我认为这就是正在做的事情

  buffer.pixels[i]  & 0xFF

0xFF 是要应用于 buffer.pixels[i] 的掩码。因此,这不是您获得所需颜色的方式。您可以尝试在 draw() 中的 ellipse() 之前调用 fill(wantedColor),但正如作者在您指出的页面中所说,对于他只使用蓝色通道的轨迹,我认为轨迹仍然是蓝色的。

于 2012-11-09T02:37:31.650 回答
1

目前还不清楚您要完成什么。RGB 颜色以三个不同的数字给出:红色、绿色和蓝色值。每个值的范围为 0 - 255。0xFF 不是 RGB 值,它是代表一种颜色的值。要获得完整的 RGB 颜色,您必须使用 0xFF0000 之类的东西。所以不,你不能神奇地将 0xFF 变成蓝色,你还必须知道其他颜色的值。您可以获取三个值,然后从那里制定颜色,IE 获取一个 rValue、gValue 和 bValue,然后将它们全部粘贴在一起以获得 0xRRGGBB 的经典 RGB 格式。

希望这可以帮助!

于 2012-11-08T22:32:31.633 回答