Java 2D,在X和Y轴上具有相同数量的平移导致不同的结果

nan*_*ack 1 java swing awt java-2d graphics2d

我只是在玩Java 2D周末项目.我试图完成的只是在远离原点的位置50,50处加载和绘制图像.现在当我尝试做到这一点时,用

g2d.drawImage(imageLeft, 50, 50, 200, 200, null);
Run Code Online (Sandbox Code Playgroud)

然后我得到以下内容:

坦率地说,这让我感到困惑.为什么翻译的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);
Run Code Online (Sandbox Code Playgroud)

编辑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);
Run Code Online (Sandbox Code Playgroud)

不幸的是,结果仍然相同.但我认为DontRelaX走在正确的轨道上.还有什么建议?

编辑2:基本上DontRelaX的回答是正确的.我确实不使用renderPanel的Graphics2D,而是使用JFrame的Graphics2D对象.

干杯,nanoquack

Don*_*laX 5

像素从窗口的左上角开始计数,而不是灰色的位置.将面板添加到窗口并在其上绘制.