Performant Scrollen

Greenleon

Greenleon

Tripel-As
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.

Code:
    @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?
 

Ähnliche Themen

Java repaint() zeichnet Canvas Objekt nicht neu

Zurück
Oben