Java 使用BuffereImage在画布上绘制像素,但不填充整个画布
我正在尝试使用BuffereImage在画布上绘制像素。在画布构造函数中,我正在初始化图像和像素数组,如下所示:Java 使用BuffereImage在画布上绘制像素,但不填充整个画布,java,Java,我正在尝试使用BuffereImage在画布上绘制像素。在画布构造函数中,我正在初始化图像和像素数组,如下所示: public MyCanvas() { Dimension size = new Dimension(WIDTH, HEIGHT); setSize(size); setPreferredSize(size); setMinimumSize(size); setMaximumSize(size); image = new Buffer
public MyCanvas() {
Dimension size = new Dimension(WIDTH, HEIGHT);
setSize(size);
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
pixels = ((DataBufferInt) img.getRaster().getDataBuffer()).getData();
}
我通过以下操作绘制每个渲染:
private void render() {
BufferStrategy bs = getBufferStrategy();
if (bs == null) {
createBufferStrategy(3);
return;
}
for (int i = 0; i < pixels.length; i++) {
pixels[i] = 0xFFFFFF;
}
Graphics g = bs.getDrawGraphics();
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(img, 0, 0, WIDTH, HEIGHT, null);
g.dispose();
bs.show();
}
到
让它达到我的期望。但是,我不明白为什么我自己设置了画布大小(宽度、高度),但它似乎与我给它的大小不一样。我看不出你在哪里设置矩形填充的颜色 试试这个:
Graphics g = bs.getDrawGraphics();
// g.setColor(Color.WHITE);
// g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
g.dispose();
bs.show();
这样做的目的不是用白色像素填充整个画布,但我担心它不会绘制整个画布。我更改了drawImage参数。这应该是整个画布,无论是否调整大小。
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
Graphics g = bs.getDrawGraphics();
// g.setColor(Color.WHITE);
// g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
g.dispose();
bs.show();