如何创建包含不透明度的颜色数组



我正在尝试使用Processing IDE(版本3.3.7(在java中创建精灵。它运行良好,只是由于我的color[][]数组只接受十六进制形式的颜色,而不接受rgba形式的颜色而无法绘制透明像素。

void setup(){ //This chunk of code is working fine
size(384, 216);
surface.setResizable(true);
noStroke();
renderSprite(Sprite.test, 100, 100);
}
void renderSprite(color[][] tex, int x, int y){
for(int i = 0; i < tex.length; i++){
for(int k = 0; k < tex[i].length; k++){
fill(tex[i][k]);
rect(x + i, y + k, 1, 1);
}
}
}

以上部分不是问题所在,但可能对解决问题有用。

static class Sprite{
static color[][] test = new color[][]{
{#FF0000, #00FF00},
{#0000FF, #FFFFFF}
};
}

这部分就是问题所在。使用(r,g,b,a(格式代替其中一个十六进制值会产生错误。(应为RPAREN,找到","(我已尝试创建一个使用rgba 的颜色对象

static color nullPix = (0, 0, 0, 0);

可能用替换其中一个十六进制值,但它给了我相同的RPAREN错误。(当使用十六进制时不会发生这种情况(

我想知道为什么rgba不能在hex可以使用的地方使用,以及是否有任何可能的解决方案。rgb会产生同样的错误,所以我不认为不透明本身就是问题所在。谢谢

Processing提供了一种创建图像的方法,并通过其PImage对象指定每像素的颜色和透明度。

换句话说,你可以放弃你试图实现的东西,因为它已经完成了。

例如,下面将创建一个不透明度为50%的红色正方形。

PImage sprite;
void setup() {
.
.
.
sprite = createImage(100, 100, ARGB);
for (int i = 0; i < sprite.pixels.length; i++) {
sprite.pixels[i] = color(255, 0, 0, 128);
}
.
.
.
}
void draw() {
.
.
.
image(sprite, 0, 0);
.
.
.
}

这还有一个额外的优点,即缓存数据,因此您不必在每帧中迭代其像素来绘制精灵(与renderSprite((方法不同(。

最新更新