# Mein Vektor-Zeichenprogramm ist zu langsam



## Turkey1976 (21. Mrz 2008)

Hallo Javaprofis,

ich habe mir ein Vektor-Zeichenprogramm geschrieben.

Dabei verwende ich Methoden wie z.B. g.drawLine, g.drawOval, g.drawString, manchmal auch g.drawImage ... das Übliche halt. Nur wird das Programm ziemlich lahm, wenn einige hundert Objekte gezeichnet wurden. 

Welche Möglichkeiten zur Beschleunigung gibt es? Pufferbitmap?

Gruß

Heiko


----------



## Marco13 (21. Mrz 2008)

Richtig langsam wird es meistens durch AntiAliasing und Halbtansparenz. Sonst wüßte ich kaum eine Möglichkeit, sowas (mit geringem Aufwand) schneller zu machen, außer eine spezielle Sache, die mir irgendwann mal aufgefallen ist: Wenn man einen "großen" Polygonzug "selbst" speichert (d.h. NICHT als GeneralPath oder so), dann könnte man verleitet sein, sowas zu schreiben wie

```
for (alle Aufeinanderfolgenden Punkte A und B meines Polygonzuges)
{
    g.drawLine(A.x, A.y, B.x, B.y);
}
```
und das wird bei "vielen" Punkten im Polygonzug sehr schnell unerträglich langsam, weil bei jedem drawLine die clipping-Grenzen neu abgefragt werden. Wenn man stattdessen vor dem Zeichnen alle Punkte in einen GeneralPath packt, und DEN dann mit draw(shape) malt, wird nur einmal die BoundingBox berechnet und die dann geclippt, was u.U. deutlich schneller sein kann.

Aber falls das bei dir nicht vorkommt, hätte ich keine Idee, wie man das Zeichnen "einfach" beschleunigen könne... Vielleicht weiß noch jemand anderes einen Tipp...


----------



## Turkey1976 (21. Mrz 2008)

das probiere ich sofort aus


----------



## Turkey1976 (21. Mrz 2008)

@Marko13: DANKE, es läuft jetzt viel schneller!  

Trotzdem, gibt es noch mehr Tipps? 

Gruß

Heiko


----------



## Turkey1976 (22. Mrz 2008)

Jetzt habe ich festgestellt, dass die Verwendung von Textobjekten stark die Performance beeinträchtigt. Gibt es eine Alternative zu g.drawString bzw gibt es eine Möglichkeit mehrere drawStrings zusammenzufassen?

Frohe Ostern

Heiko


----------

