我有一个 JScrollPane 包围的 JPanel。此 JPanel 用于显示图像。我需要提供 zoomIn、zoomOut、顺时针旋转和 antiClockwiseRotate 等功能。所有这些功能都可以单独正常工作。对于缩放,我称之为图形对象的比例。它发生在左上角到右下角的基础上。对于旋转,我重置了比例,并平移、旋转和平移回图形对象。但是当我将缩放与旋转结合使用时,它的行为会有所不同。例如,我顺时针旋转,图像被旋转到 1.57079633 弧度(大约 90 度)。现在,当我按下缩放时,图像会被缩放,但缩放是基于右上角和左下角而不是左上角和右下角进行的。如果我再次以顺时针方向旋转图像,我会重置缩放,也就是说,我将图像缩放到其原始大小,然后在图形对象上调用平移、旋转和平移。现在,如果我再次按下缩放,它会根据右下角和左上角放大。
因此问题是当面板坐标改变时图像的坐标没有改变。有人可以帮我改变图像的坐标吗?
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
g2d.translate((tempWidth/2), (tempHeight/2));
g2d.rotate(m_rotate);
g2d.translate(-(tempWidth/2), -(tempHeight/2));
g2d.scale(m_zoom, m_zoom);
if(this.image != null && this.image.getHeight(null) > 0)
{
g2d.drawImage(this.image, 0, 0,302,312,this);
}
else
{
g2d.drawString("View Image Here!. ", 20, 20);
}
}