J
Jazoon5
Gast
So,
also ich möchte in ein SVG-Image hineinzoomen. Dazu zieht der User mit der Maus ein Rechteck auf --> dies ist der gewählte Bereich und in den soll hineingezoomt werden.
Ich habe mir dafür die linke obere Koordinate und die rechte untere Koordinate des aufgezogenen Rechtecks gespeichert und umgewandelt, sodass die Koordinaten passen (also 0,0 ist links oben vom SVG-Image und nicht vom Component):
Dann habe ich lange lange Zeit gesucht, wie man so einen Zoom realisiert und einige Beispiel codes gefunden, dabei ist bei mir folgendes herausgekommen (jedoch würde hier der Zoom nur auf die linke obere Koordinate des aufgezogenen Rechtecks funktionieren):
So, hier henge ich nun fest und komme nicht mehr weiter..
Meine Frage ist nun, wie ich es realisieren könnte, dass mir bei einem Click auf dem Button "Zoom" direkt in den gewählten (aufgezogenen) Bereich hineingezoomt wird. Also nur in den Bereich, ganz reinzoomen so weit es geht, sodass dieser Bereich dann über die gesamte größe des Components gestreckt wird.
also ich möchte in ein SVG-Image hineinzoomen. Dazu zieht der User mit der Maus ein Rechteck auf --> dies ist der gewählte Bereich und in den soll hineingezoomt werden.
Ich habe mir dafür die linke obere Koordinate und die rechte untere Koordinate des aufgezogenen Rechtecks gespeichert und umgewandelt, sodass die Koordinaten passen (also 0,0 ist links oben vom SVG-Image und nicht vom Component):
Code:
at = canvas.getViewBoxTransform();
p2d1 = at.transform(new Point2D.Float(pressedX, pressedY), null);
p2d2 = at.transform(new Point2D.Float(releasedX, releasedY), null);
Dann habe ich lange lange Zeit gesucht, wie man so einen Zoom realisiert und einige Beispiel codes gefunden, dabei ist bei mir folgendes herausgekommen (jedoch würde hier der Zoom nur auf die linke obere Koordinate des aufgezogenen Rechtecks funktionieren):
Code:
if(cmd.equals("Zoom")){
AffineTransform at;
at = canvas.getRenderingTransform();
if(p2d1 != null && p2d2 != null){
at.preConcatenate(AffineTransform.getTranslateInstance(-p2d1.getX(), -p2d1.getY()));
at.preConcatenate(AffineTransform.getScaleInstance(1.25, 1.25));
at.preConcatenate(AffineTransform.getTranslateInstance(p2d1.getX(), p2d1.getY()));
canvas.setRenderingTransform(at);
System.out.println("Zoom-in");
}
}
So, hier henge ich nun fest und komme nicht mehr weiter..
Meine Frage ist nun, wie ich es realisieren könnte, dass mir bei einem Click auf dem Button "Zoom" direkt in den gewählten (aufgezogenen) Bereich hineingezoomt wird. Also nur in den Bereich, ganz reinzoomen so weit es geht, sodass dieser Bereich dann über die gesamte größe des Components gestreckt wird.