私はJScrollPaneで囲まれたJPanelを持っています。この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
1)早いほど良いのヘルプについては、[SSCCE](HTTPを投稿:// sscce .org /)。 2) 'paint()'ではなく 'JPanel'で' paintComponent() 'をオーバーライドします3)' this.image.getHeight(null) 'は' this.image.getHeight(this) 'でなければなりません –
これも見てください[答え](http://stackoverflow.com/a/4292509/230513)。 – trashgod