Moin zusammen,
ich sitze gerade an einem Problem und zwar, ich verwende in meinem Projekt Apache Batik. s gibt dort die Möglichkeit die geladene SVG Grafik zu zoomen, das funktioniert auch soweit sehr gut.
Nur ist es aber so, dass die Grafik an der oberen linken Ecke aufgehängt ist und es von da aus gezoomt wird, was sehr komisch aussieht. Sprich es ist nicht so, dass die Grafik am Mauscursor gezoomt wird, was an der Stelle natürlicher wäre.
Über den JSVGCanvas kriege ich zwar die Cursorposition raus, mehr aber auch nicht...
Hat jemand eine Idee, wie es doch gehen könnte? Ich habe leider nichts diesbezüglich in der Doku gefunden
ich sitze gerade an einem Problem und zwar, ich verwende in meinem Projekt Apache Batik. s gibt dort die Möglichkeit die geladene SVG Grafik zu zoomen, das funktioniert auch soweit sehr gut.
Code:
import java.awt.Point;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.awt.geom.AffineTransform;
import org.apache.batik.swing.JSVGCanvas;
public class WDSMouseWheelListener implements MouseWheelListener {
protected JSVGCanvas _svgCanvas;
protected double _factor = 0.1;
public WDSMouseWheelListener (JSVGCanvas svgCanvas) {
this._svgCanvas = svgCanvas;
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
AffineTransform at = _svgCanvas.getRenderingTransform();
double scaleX = at.getScaleX();
double scaleY = at.getScaleY();
if (e.getWheelRotation() > 0) {
scaleX = scaleX - _factor;
scaleY = scaleY - _factor;
} else {
scaleX = scaleX + _factor;
scaleY = scaleY + _factor;
}
if (scaleX < 0.1) {
return;
}
at.setToScale(scaleX, scaleY);
_svgCanvas.setRenderingTransform(at, true);
}
}
Nur ist es aber so, dass die Grafik an der oberen linken Ecke aufgehängt ist und es von da aus gezoomt wird, was sehr komisch aussieht. Sprich es ist nicht so, dass die Grafik am Mauscursor gezoomt wird, was an der Stelle natürlicher wäre.
Über den JSVGCanvas kriege ich zwar die Cursorposition raus, mehr aber auch nicht...
Hat jemand eine Idee, wie es doch gehen könnte? Ich habe leider nichts diesbezüglich in der Doku gefunden
Zuletzt bearbeitet: