1
我有一個JPanel與JScrollPane包圍。此JPanel用於顯示圖像。我需要提供zoomIn,zoomOut,clockwiseRotate和antiClockwiseRotate等功能。所有這些功能都單獨運行良好。對於縮放,我稱之爲圖形對象的縮放。它發生在左上角到右下角的基礎上。對於旋轉,我重置比例,並翻譯,旋轉&回傳圖形對象。但是,當我將縮放與旋轉結合起來時,它的行爲有所不同。例如,我順時針旋轉,圖像旋轉到1.57079633弧度(大約90度)。現在,當我按縮放時,圖像變得放大,但縮放發生在右上和左下的基礎上,而不是左上和右下。如果我再次按順時針方向旋轉圖像,則重置縮放,即將圖像縮放到其原始大小,然後調用平移,旋轉和迴轉圖形對象。現在,如果再次按變焦,則會根據右下角和左上角進行放大。Java Swing旋轉和縮放
因此,問題是當面板座標改變時,圖像的座標不會改變。有人能幫我改變圖像的座標嗎?
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);
}
}
http://stackoverflow.com/questions/10040502/zoom-panel-in-java-appliction/10040546#10040546 – StanislavL 2012-04-09 10:40:41
1)爲了更好地幫助越早,張貼[SSCCE](HTTP:// SSCCE .org等/)。 2)在'JPanel'中覆蓋'paintComponent()'而不是'paint()'3)'this.image.getHeight(null)'應該是'this.image.getHeight(this)' – 2012-04-09 10:53:06
另請參閱this [答案](http://stackoverflow.com/a/4292509/230513)。 – trashgod 2012-04-09 19:37:25