BufferedImage.setRGB() 不工作
BufferedImage.setRGB() not working
我有一个正在绘制到 JPanel 上的 BufferedImage。我要做的是通过以下方式设置 BufferedImage 的像素:
for (int yy = 0; yy < 18; yy++) {
for (int xx = 0; xx < 24; xx++) {
image.setRGB(xx * 32, yy * 32, 32, 32, pixels, 0, 32);
}
}
像素被定义和实例化,18是image/32的高度,24是image/32的宽度。这种方法似乎有效,但只有一半的时间。发生的情况是它有时会绘制所有图像,有时会绘制它的前三分之一(然后停止),有时它会绘制前 1/5,然后跳到图像的另一部分并绘制一些然后停在那里。没有抛出错误,应用程序没有暂停或加载。有时有效,有时无效。为什么会发生这种情况?
我的猜测是你的问题是线程问题,因为你显示的代码可能需要相当长的时间(相对而言)才能工作,并且要使其与 Swing 一起工作得最好,你必须确保 运行 它在后台线程中,然后在完成时通知 GUI,然后让 GUI 更新图像。 SwingWorker 可以很好地解决这个问题。
我有一个正在绘制到 JPanel 上的 BufferedImage。我要做的是通过以下方式设置 BufferedImage 的像素:
for (int yy = 0; yy < 18; yy++) {
for (int xx = 0; xx < 24; xx++) {
image.setRGB(xx * 32, yy * 32, 32, 32, pixels, 0, 32);
}
}
像素被定义和实例化,18是image/32的高度,24是image/32的宽度。这种方法似乎有效,但只有一半的时间。发生的情况是它有时会绘制所有图像,有时会绘制它的前三分之一(然后停止),有时它会绘制前 1/5,然后跳到图像的另一部分并绘制一些然后停在那里。没有抛出错误,应用程序没有暂停或加载。有时有效,有时无效。为什么会发生这种情况?
我的猜测是你的问题是线程问题,因为你显示的代码可能需要相当长的时间(相对而言)才能工作,并且要使其与 Swing 一起工作得最好,你必须确保 运行 它在后台线程中,然后在完成时通知 GUI,然后让 GUI 更新图像。 SwingWorker 可以很好地解决这个问题。