PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Performant Scrollen



Greenleon
01.07.2010, 17:12
Hi,

ich suche performante eine Moeglichkeit ein grosses Bild mit Text durch ein AWT Component scrollen zu lassen, so dass man mitlesen kann.

Im Moment realisier ich das so, dass meine Klasse Displayer Component extended und Runnable implementiert. Das Scrollen geschieht, indem das Bild jeweils einen Pixel nach oben verschoben wird und der Thread dann fuer ein paar Milisekunden schlafen gelegt wird.
Das ganze flackert jetzt leicht und das paint() hinkt gelegentlich hinterher.

Um das Bild anzuzeigen, habe ich paint(Graphics g) ueberschrieben und zeichne das Bild mit g.drawImage aus einem BufferedImage.




@Override
public void paint(Graphics g)
{

if(displayImage != null && displayCoordinates != null)
g.drawImage(displayImage, displayCoordinates.x, displayCoordinates.y, this);
}

// teil aus run()

deltay = (int) (getHeight() - displayImage.getHeight());
do {
displayCoordinates= new Point((getWidth() - displayImage.getWidth()) / 2,y);

try {
Thread.sleep(scrollsleep);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
paint(getGraphics());

} while (--y > deltay);


Gibt es eine elegantere/schnellere Methode?