Guten Tag zusammen,
ich habe ein Problem mit AffineTransform, bzw. ich verstehe nicht so ganz wie es funktioniert.
Mein Sachverhalt:
-> JPanel mit einem JSVGCanvas drauf
-> eine SVG Datei wird geladen und angezeigt
-> ich versuche das Bild zu verschieben.
Wenn ich das Bild mit der Maus packe (irgendwo auf dem Bild) und versuche es zu schieben, springt die Koordinate 0,0 unter den Mauszeiger, sprich die 0,0 des Bildes wird am Mauszeiger ausgerichtet. Was ja falsch ist. Nun habe ich versucht die Ursprungskoordinate (sprich die beim Drücken der Maustaste) zu speichern und in den AffineTransform zu stecken, das passt auch halbwegs.
Mein Problem ist, dass es das Bild immernoch versetzt, wenn auch nicht so extrem.
Hier ist der Code-Abschnitt, der das Verschieben übernimmt:
p1 ist dabei die Koordinate beim Drücken der Maustaste, also Ausgangspunkt.
Könnt Ihr mir etwas auf die Sprünge helfen?
Danke im Voraus.
ich habe ein Problem mit AffineTransform, bzw. ich verstehe nicht so ganz wie es funktioniert.
Mein Sachverhalt:
-> JPanel mit einem JSVGCanvas drauf
-> eine SVG Datei wird geladen und angezeigt
-> ich versuche das Bild zu verschieben.
Wenn ich das Bild mit der Maus packe (irgendwo auf dem Bild) und versuche es zu schieben, springt die Koordinate 0,0 unter den Mauszeiger, sprich die 0,0 des Bildes wird am Mauszeiger ausgerichtet. Was ja falsch ist. Nun habe ich versucht die Ursprungskoordinate (sprich die beim Drücken der Maustaste) zu speichern und in den AffineTransform zu stecken, das passt auch halbwegs.
Mein Problem ist, dass es das Bild immernoch versetzt, wenn auch nicht so extrem.
Hier ist der Code-Abschnitt, der das Verschieben übernimmt:
Java:
@Override
public void mouseDragged(MouseEvent e) {
System.out.println("Koordinaten: (" + e.getX() + "; " + e.getY() + ");");
AffineTransform at = canvas.getRenderingTransform();
at.setToIdentity();
at.translate(e.getX(), e.getY());
at.translate(-p1.getX(),-p1.getY());
canvas.setRenderingTransform(at, true);
}
p1 ist dabei die Koordinate beim Drücken der Maustaste, also Ausgangspunkt.
Könnt Ihr mir etwas auf die Sprünge helfen?
Danke im Voraus.