Batik zoom

Status
Nicht offen für weitere Antworten.
J

Jazoon5

Gast
Hallo!

Also ich beschäftige mich derzeit etwas mit Batik. Das größte Problem ist, dass es null Tutorials oder der Gleichen gibt wo das ganze ein bisschen umschrieben wird :(

Ich habs derzeit soweit, dass ich SVG-Files öffnen kann. Wenn ich in einem JSVGCanvas ein SVG anzeige, möchte ich natürlich reinzoomen. Das geht ja in Batik standardmäßig per STRG+left mousebutton (über die Dragfunktion), da wird dann automatisch rangezoomt.

--> Ich möchte das ganze jedoch auf Buttonklick machen und per angabe der Koordinaten. Also der User gibt an z.B. x1,y1,x2,y2 (anstatt ein rechteck aufzuziehen mit der maus) und dann wird nach betätigen des Buttons da reingezoomt.

Ich hoffe ihr könnt mir da helfen, das bräuchte ich noch zur komplettierung meiner Applikation..

MfG Jazoon5
 
G

Guest

Gast
Mit Batik habe ich noch nie was gemacht, aber da ist auch Sourcecode dabei, oder?
Schau dir den Code der Aktion an, die beim Click mit Ctrl-Left ausgeführt wird und mache das gleiche, allerdings
mit eigenen Koordinaten, nicht mit den Mouse-Koordinaten.
 
G

Guest

Gast
Ja da bin ich gerade dabei herauszufinden, wie das ganze funktioniert :(
So leicht ist das leider nicht, da der Code und die Struktur solcher SVG Files doch recht komplex aufgebaut ist.

Naja, falls ich es schaffe, poste ich hier mein Ergebnis..
 

HoaX

Top Contributor
ich hab jetzt kein batik hier installiert aber so aus der erinnerung raus: du kannst beim svgcanvasn ein renderingtransform setzen.
 
J

Jazoon5

Gast
Ah Hoax Danke!!

Was genau macht das Rendering Transform eigentlich? Ich habe mal etwas gsucht und mir etwas zusammengeschnippselt wie unten im Code ersichtlich: (Steht in meinem ActionListener derzeit)
--> Mein Problem ist bloß, dass ich keine Ahnung habe was er jetzt genau tut da unten.. was bewirkt denn Point2D auf 200, 400 .. damit man als user genau sagen kann oke wenn ich diese koordinaten angebe, zoomt er mir dorthin.

Code:
			if(cmd.equals("Zoom")){
				try {
					AffineTransform at;
					at = canvas.getViewBoxTransform();
						if (at != null) {							
							at = at.createInverse();
							Point2D p2d = at.transform(new Point2D.Double(200.0, 400.0), null);
							canvas.setRenderingTransform(at);
						}
					} catch (NoninvertibleTransformException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben