我有一段代码片段我用于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(蓝色)= 0xFF0000我的画布什么都没画。我的代码来自这个例子:openprocessing.org/sketch/52388
答案 0 :(得分:1)
目前还不清楚你想要完成什么。 RGB颜色以三个不同的数字给出:红色,绿色和蓝色值。每个值的范围为0 - 255. 0xFF不是RGB值,它是表示其中一种颜色的值。要获得完整的RGB颜色,您必须使用类似0xFF0000的颜色。所以不,你不能神奇地将0xFF变成蓝色,你也必须知道其他颜色的值。你可以接受三个值,然后从那里制定颜色,IE接受rValue,gValue和bValue,然后将它们全部粘在一起以获得经典的RGB格式0xRRGGBB。
希望这有帮助!
答案 1 :(得分:1)
我不知道二进制数学,但我认为这是在
中完成的 buffer.pixels[i] & 0xFF
0xFF是要应用于buffer.pixels [i]的掩码。所以这不是你获得所需颜色的方式。您可以尝试在draw()中的ellipse()之前调用fill(wantedColor),但正如作者在您指向的页面中说的那样,对于路径他只使用蓝色通道我认为路径仍然是蓝色。