# Isometrische Map Zoomen



## Tiim (21. Okt 2012)

Hallo Zusammen

Für meinem Isometrischen Mapeditor muss ich die Karten unbedingt zoomen können.
Das geht auch, aber die Karte verschiebt sich dabei. Wie kann ich es machen, die Karte immer in die Mitte hin zoomt?

Gegeben ist der alte Zoom, den Offset X und Y und der neue Zoom, und natürlich die Grösse des Views

gerendert wird folgendermasen:

```
public void draw(final Map map, final Rectangle viewport, final Graphics2D g) {
    g.translate(translationX,translationY);
    g.scale(zoom,zoom);
    //Render Tiles
}
```

Geändert werden soll nur der Offset.

Irgendwie bekomme ich es einfach nicht hin. Kann mir jemand erklären wie man das normalerweise macht? Oder evtl. sogar, wie man zum Mauszeiger zoomen kann, wenn dessen Position auf der View gegeben ist.


----------



## Firephoenix (21. Okt 2012)

Ich hab meinen Zoom so gelöst, das nach jedem zoom-Schritt die Map auf den Mauszeiger zentriert wird.

Das zentrieren selber ist relativ einfach:

Finde die Weltposition er Bildschirmmitte, finde die Weltposition deines Mauszeigers und verschiebe dann den View so, das die Mauszeiger-Welt-Position an der Bildschirmmitte ist.

Gruß


----------



## Marco13 (21. Okt 2012)

Man muss dafür i.A. den Punkt, um den gezoomt wird, in den Ursprung legen, dann zoomen, und dann den Punkt zurückverschieben - mit dem richtigen Zoomfaktor. Ich mach's immer wieder falsch, habe es aber mal in http://www.java-forum.org/awt-swing-swt/139248-zoomen-jpanel.html#post923955 eingebaut (zoom-Methode). Vielleicht hilft das ja schon.


----------

