【发布时间】:2012-04-13 18:29:21
【问题描述】:
我正在使用 Applet 编写一个小游戏。我希望能够检查屏幕上像素的颜色。但是,当我在游戏循环(反复执行的 while 循环)中对缓冲图像使用 .getRGB() 时,即使像素颜色实际上从未改变,它也会给我不一致的值!
例如,如果我用绿色填充图像并在屏幕中间的像素上调用 .getRGB() 有时它会给我 0xFF00FF00(绿色)作为颜色,有时它给我 0xFF000000(黑色) 即使颜色始终保持绿色!
有什么帮助吗?
如果有帮助,这里是相关代码,我已将其最小化以专注于问题:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
public class t extends Applet implements Runnable {
Graphics2D bufferG;
BufferedImage bufferI;
final int WIDTH = 500, HEIGHT = 500;
public void init() {
setSize(WIDTH, HEIGHT);
bufferI = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
bufferG = bufferI.createGraphics();
(new Thread(this)).start();
}
public void run() {
while (true){
if (bufferI.getRGB(WIDTH/2, HEIGHT/2)==0xFF000000) System.out.println("BLACK");
}
}
public void paint(Graphics g) {
bufferG.setColor(Color.green);
bufferG.fillRect(0, 0, WIDTH, HEIGHT);
g.drawImage(bufferI, 0, 0, this);
}
}
【问题讨论】:
-
这是一种猜测我的代码在做什么的问题,这让我认为你在错误的论坛上发布了它。尝试发布代码并提供问题的详细描述和您的调试尝试,或尝试大厅下方的千里眼论坛 - 以您更好的运气为准!
-
@Hovercraft SSCCE 发布为编辑(和答案)。