我正在玩Java 2D周末项目。我试图完成的只是在远离原点的位置50,50处加载和绘制图像。现在,当我尝试用
做到这一点时g2d.drawImage(imageLeft, 50, 50, 200, 200, null);
然后我得到以下内容:
坦率地说,这让我感到困惑。为什么翻译的x部分与y部分的缩放比例不同?这里发生了什么?必须是一个明显的初学者的错误,但我无法弄清楚这种行为对我的生活的原因; - )
我用来绘制图像的完整代码是:
final IsogenWindow window = new IsogenWindow();
final BufferedImage imageLeft = loadImage(new File(getClass().getResource("/texture/tile1.png").toURI()));
final Graphics2D g2d = Graphics2D)window.getGraphics();
window.setSize(1000, 1000);
window.setVisible(true);
g2d.drawImage(imageLeft, 50, 50, 200, 200, null);
编辑1: 试试DontRelaX'建议,我更改了我的代码,因此面板被添加到JFrame中,其Graphic2D对象用于绘图:
getContentPane().setLayout(null);
this.renderPanel = new JPanel();
getContentPane().add(renderPanel);
final Graphics2D g2d = (Graphics2D)renderPanel.getGraphics();
...
g2d.drawImage(imageLeft, 50, 50, 200, 200, null);
不幸的是,结果仍然相同。但我认为DontRelaX走在正确的轨道上。还有其他建议吗?
编辑2:基本上是DontRelaX'答案是对的。我确实不使用renderPanel的Graphics2D,而是使用JFrame的Graphics2D对象。
干杯, nanoquack
答案 0 :(得分:5)
像素从窗口的左上角开始计数,而不是灰色的位置。将面板添加到窗口并在其上绘图。