0
我想使用BufferedImage在畫布上畫像素。在我的畫布構造我初始化圖像和像素陣列,像這樣:在BufferedImage上畫布上的像素不能填滿整個畫布
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();
}
我期待我的畫布充滿了白色像素,但我在白色區域的右側和底部獲得黑色邊框,即它看起來並沒有填滿整個畫布,或者它有一些負偏移。我已經檢查過像素數組的長度是WIDTH * HEIGHT。我將畫布放入JFrame中帶有BorderLayout.CENTER的JPanel中。
編輯:
更改
g.drawImage(img, 0, 0, WIDTH, HEIGHT, null);
到
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
使得它做什麼,我的期望。然而,我不明白爲什麼我必須自己設置大小(以WIDTH,HEIGHT)來獲取畫布大小,而且它看起來與我給它的大小不一樣。
的目的不是爲了填充白色像素的整個畫布真的,但我擔心它不會畫到整個畫布。 – tobier
我改變了drawImage參數。這應該是整個畫布,不管它是否調整大小。 –