【发布时间】:2020-06-25 18:52:23
【问题描述】:
我有存储 .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);
}
【问题讨论】:
-
我认为代码在这里没用。我只是使用 Graphics.drawImage(image, x, y, 0);
-
我在过去(很多年前 ;-))也遇到过类似的问题,可能与
RenderingHints有关,看看这里也许对 stackoverflow.com/a/36316937/150623 和这里有帮助 docs.oracle.com/javase/tutorial/2d/advanced/quality.html -
谢谢汤米。我也在 RenderingHints 中想到了这个问题,但它对我没有帮助。
-
我注意到一件事。我将窗口的分辨率更改为 (320 * 3) x (240 * 3) 并使用 Graphics.scale(3, 3) (缩放我绘制的所有图形)。现在我得到的图像看起来像我画的图像,但我不认为这是我的问题的决定。
标签: java graphics bufferedimage graphics2d java-2d