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

在Java 2D中,X轴和Y轴上相同数量的平移会导致不同的结果,java,swing,awt,graphics2d,java-2d,Java,Swing,Awt,Graphics2d,Java 2d,我只是为了一个周末的项目在玩Java2D。我试图完成的只是在距离原点50,50的位置加载并绘制图像。现在,当我试图做到这一点时 g2d.drawImage(imageLeft, 50, 50, 200, 200, null); 然后我得到以下结果: 坦白说,这让我有点困惑。为什么平移的x部分缩放比例与y部分不同?这是怎么回事?这肯定是一个明显的初学者的错误,但我无法找出我一生中这种行为的原因;-) 我用于绘制图像的完整代码是: final IsogenWindow window = new

我只是为了一个周末的项目在玩Java2D。我试图完成的只是在距离原点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从窗口左上角开始计算像素数,而不是从灰色区域开始计算。将面板添加到窗口并在其上绘制。

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

基于@DontRelaX'答案的另一种方法是测量偏移量。1)
final Graphics2D g2d=Graphics2D)window.getGraphics()正在形成的Bug。图形对象是暂时的,不应缓存。2) 
g2d.drawImage(imageLeft,50,50,200,200,null)应该是
g2d.drawImage(imageLeft,50,50,200,200,this)3)
getContentPane().setLayout(null)充其量是不必要的,充其量是导致错误的原因。。基于@DontRelaX'答案的另一种方法是测量偏移量。1)最终图形2d g2d=Graphics2D)窗口。getGraphics()正在形成的Bug。图形对象是暂时的,不应缓存。2) 
g2d.drawImage(imageLeft,50,50,200,200,null)应该是
g2d.drawImage(imageLeft,50,50,200,200,this)3)
getContentPane().setLayout(null)充其量是不必要的,充其量是导致错误的原因。。