Hi,
ich habe mir ein Panel gebaut, welches in einer ScrollPane liegt. In der paintComponent()-Methode werden derzeit einfach Objekte gezeichnet (Rectangles, Shapes). Diese möchte ich nun Zoomen, Drehen etc.
Ich habe es wie folgt versucht:
Das Zoomen funktioniert soweit, aber leider wird die ScrollPane so nicht informiert. Hat jemand nen Tip, wie und wo ich das machen kann?
Eine Möglichkeit ist, die Methode getPreferredSIze() zu überschreiben. Da habe ich dann ein künstlich als Hintergrund geladenes BufferedImage als Grundlage benutzt. Das finde ich aber sehr unschön, da ich eigentlich gar kein Image im Hintergrund habe und brauche.
Das muss doch auch ohne gehen, oder?
Danke und Gruß
shocking
ich habe mir ein Panel gebaut, welches in einer ScrollPane liegt. In der paintComponent()-Methode werden derzeit einfach Objekte gezeichnet (Rectangles, Shapes). Diese möchte ich nun Zoomen, Drehen etc.
Ich habe es wie folgt versucht:
Code:
protected void paintComponent( Graphics g )
{
Graphics2D g2D = ( Graphics2D )g;
AffineTransform transform = new AffineTransform();
transform.scale( m_zoomFactor, m_zoomFactor );
g2D.transform( transform );
paintBackground( g2D ); // malt den Hintergund mit verschiedenen Farbabschnitten
paintObjects( g2D ); // malt die Objekte
}
Das Zoomen funktioniert soweit, aber leider wird die ScrollPane so nicht informiert. Hat jemand nen Tip, wie und wo ich das machen kann?
Eine Möglichkeit ist, die Methode getPreferredSIze() zu überschreiben. Da habe ich dann ein künstlich als Hintergrund geladenes BufferedImage als Grundlage benutzt. Das finde ich aber sehr unschön, da ich eigentlich gar kein Image im Hintergrund habe und brauche.
Code:
this.backgroundImage = new BufferedImage(size.width, size.height,
BufferedImage.TYPE_INT_RGB);
public Dimension getPreferredSize()
{
Dimension size =
new Dimension(
( int )( backgroundImage.getWidth( this ) + ( backgroundImage
.getWidth( this ) * ( this.zoomFactor - 1 ) ) ),
( int )( backgroundImage.getHeight( this ) + ( backgroundImage
.getHeight( this ) * ( this.zoomFactor - 1 ) ) ) );
return size;
}
Das muss doch auch ohne gehen, oder?
Danke und Gruß
shocking