# [Java 1.5] Shapes auf einem JPanel zoomen



## Fabian23 (4. Nov 2006)

Hallo zusammen,

ich habe mittels der paint-Methode Shapes auf ein JPanel gezeichnet. Jetzt möchte ich die gerne zoomen. Die Shapes an sich um einen bestimmen Zoomfaktor zu vergrößern ist ja nicht das Problem. Allerdings habe ich keine Idee, wie ich die Abstände der Shapes vergrößern kann, so dass diese auch gezoomed aussehen.

Falls jemand einen Denkanstoß hat, bin ich neugierig! Ich habe zurzeit noch keine Idee.


Gruß,
Fabian


----------



## dieta (4. Nov 2006)

Entweder du zeichnest die Shapes erst auf ein BufferedImage und zeichnest das dann, oder du machst es mit einer AffineTransform:

```
dasGraphics2D.setTransform(AffineTransform.getScaleInstance(double sx, double sy);
```


----------



## Fabian23 (5. Nov 2006)

Hallo dieta,

danke für die Antwort. Ich hab's jetzt mal ausprobiert und die Geschwindigkeit beim Zeichnen ist extram langsam geworden. Hast Du da eine Erklärung für?


Gruß,
Fabian


----------



## Wildcard (5. Nov 2006)

Zeig mal etwas Code.


----------



## Fabian23 (5. Nov 2006)

Wildcard hat gesagt.:
			
		

> Zeig mal etwas Code.




```
public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D)g;
        g2.setTransform(AffineTransform.getScaleInstance(2.0, 2.0));
        
        for (int i = 0; i < this.shapes.size(); i++) {
            this.shapes.get(i).paint(g2);        
        }
    }
```

In der Schleife zeichne ich alle Shapes, die sich auf dem Panel befinden.


----------



## Wildcard (5. Nov 2006)

hmm...
Wieviel Performance hat dich die AffineTransform ungefähr gekostet?


----------



## Fabian23 (5. Nov 2006)

also 50-60% würde ich schätzen. Man merkt die Unterschiede stark.


----------



## Wildcard (5. Nov 2006)

Kommt mir ehrlich gesagt zu viel vor. Zeichnest du evtl. viele Bilder?
Mal einen Profiler versucht?


----------



## Fabian23 (5. Nov 2006)

Das Problem tritt auch auf, wenn ich nur ein Shape zeichne.
Kannst Du mir einen Profiler empfehlen?


----------



## Wildcard (5. Nov 2006)

Woher weißt du dann das es langsamer wird?
Ein einziges Shape kann für deinen Rechner doch keine Problem darstellen.  :?:


----------



## dieta (5. Nov 2006)

Vielleicht hat er einen Bug im Programm und zeichnet das eine Shape 400 mal in der Sekunde neu? Das würde es erklären.

@Fabian23: Gib' mal 'nen Link oder Quellcopde zud einem Programm, dann kann ich's mal bei mir ausprobieren.


----------



## Wildcard (5. Nov 2006)

Also in generelles Problem ist es jedenfalls nicht, da ich an einem Programm arbeite das mehrere tausend Shapes zeichnet und skaliert.


----------

