我正在关注一个教程来扩展我的知识,但是导师有时会认为有些事情不需要解释。
看看这段代码:
private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
someMethod() {
for (int i=0; i<pixels.length; i++) {
pixels[i] = i;
}
g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
}
我在画布上作画,令我大吃一惊的是,这会画出从黑色到蓝色的颜色。我想知道如何访问/修改红色和绿色的颜色(因为“像素”是单个整数的数组)。如果我将 RGB 替换为 BGR,则此颜色将变为红色。但这是一个旁注。编辑:绘制绿色和红色使用位移运算符<< and |
。例如:int greenColor = 255<<16;
或int greenAndRed = 255<<16 | 255<<8;
EDIT-END
这里的一个主要难题是为什么要绘制任何东西。为像素数组赋值如何更新图像?(我根本不理解字段声明。数组启动的目的是什么)。但是我对 Java 的了解告诉我这无关紧要。它是一个普通的 int 数组,带有普通的 int。有人可以告诉我发生了什么事吗?
编辑 问题已解决。实际上,图像数据发生变化并不奇怪,因为数组不像其他简单数据类型那样不可变。