Hallo!
Ich habe ein Geschwindigkeitsproblem bei meinem Image.
Ich baue mir aus mehreren Polygonen ein Image zusammen
Die Funktion printObject(...)t wird für jedes ShapePolygon einzeln aufgerufen ( ca. 20000 mal )
Das Graphics2D kommt von einem BufferedImage.
Nun ist das ganze aber ziemlich langsam und benötigt bei mir etwa eine halbe Sekunde für ein komplettes Bild.
Gibt es da nicht etwas besseres wie z.B. mit einem MemoryImageSource/ Hashtable oder sonst etwas??? ( mal abgesehen das man bei dem Code hier noch etwas optimieren kann)
Danke
TSlaughter
Ich habe ein Geschwindigkeitsproblem bei meinem Image.
Ich baue mir aus mehreren Polygonen ein Image zusammen
Code:
public void printObject(Graphics2D g,ShapePolygon sp, boolean bs, int index, int modus)
{
Area rgarea = getPrintObject(sp,bs);
if (rgarea!=null) printShape(g,rgarea,index,modus);
}
public void printShape(Graphics2D g, Area a, int index, int modus)
{
g.setStroke(...);
...
g.fill(a);
g.setColor(...);
g.draw(a);
}
public Area getPrintObject(ShapePolygon sp, boolean bs)
//zeichnet ein ShapePolygon und gibt die dazugehörige Area zurück
{ Area rgarea; //Rückgabearea
boolean sichtbar = true;
if (bs)
{
Rectangle bildschirm = new Rectangle(...);
sichtbar = bildschirm.intersects(sp.getRect());
}
else sichtbar = true;
if ((at.getMin()!=0) && (sichtbar))
{
sichtbar = ((...));
}
if (sichtbar) //wenn Polygon sichtbar ist, wir rgarea erstellt
{
double[] point = new double[2];
int anzpkt = sp.getNumPoints();
int[] x = new int[anzpkt];
int[] y = new int[anzpkt];
for (int i=0; i<anzpkt ;i++)
{ point = sp.getPoint(i);
// umrechnung in eine passende Zoomstufe
x[i] = mainhandler.shapefunctions.Zoom((double)point[0]);
y[i] = mainhandler.shapefunctions.Zoom((double)point[1]);
}
rgarea = new Area(new Polygon(x,y,anzpkt));
}
else rgarea = null;
return rgarea;
}
Die Funktion printObject(...)t wird für jedes ShapePolygon einzeln aufgerufen ( ca. 20000 mal )
Das Graphics2D kommt von einem BufferedImage.
Nun ist das ganze aber ziemlich langsam und benötigt bei mir etwa eine halbe Sekunde für ein komplettes Bild.
Gibt es da nicht etwas besseres wie z.B. mit einem MemoryImageSource/ Hashtable oder sonst etwas??? ( mal abgesehen das man bei dem Code hier noch etwas optimieren kann)
Danke
TSlaughter