为什么在Java中用Graphics.drawImage()显示的图像不像我画的那样

Why is an image displayed with Graphics.drawImage() in Java not like I drew it

我有存储 .png 图像 (320 x 240) 的 BufferedImage,我用 Graphics.drawImage() 在 Сanvas 上绘制它。但是如果你仔细观察,例如,3 x 3 像素的十字实际上是 4 x 3 像素。看看我在图片中的问题:enter image description here

GameContainer 渲染方法:

public void render() {
    bs = window.canvas.getBufferStrategy();
    if (bs == null) {
        window.canvas.createBufferStrategy(3);
        return;
    }
    g = (Graphics2D) bs.getDrawGraphics();
    gm.render(g);
    g.dispose();
    bs.show();
}



GameManager 渲染方法:

public void render(Graphics2D g) {
    b.render(g);
}



后台渲染方式:

public void render(Graphics2D g) {
    g.drawImage(image, 0, 0 , null);
}

您可能正在使用 drawImage() 的重载之一来缩放图像以适合特定区域。你可以在这里看看: https://docs.oracle.com/javase/tutorial/2d/images/drawimage.html 以下段落: 例如,以下 drawImage() 方法的重载使您能够绘制指定图像的指定区域(当前可用的区域),缩放它以适应目标可绘制表面的指定区域内:

布尔值Graphics.drawImage(图片img, int dstx1, int dsty1, int dstx2, int dsty2, int srcx1, int srcy1, int srcx2, int srcy2, ImageObserver 观察者);