java Malprogram



  • Ersteinmal eine grundsätzliche Frage:

    Warum sollte mann die update, paint bzw repaint methoden überschreiben anstatt sich einfach eine Referenz auf das graphics Object zu holen und einfach loszuzeichen (ausserhalb obiger Methoden)?

    Ich habe so ein Rechteckwerkzeug sodass man mit der Maus Rechtecke zeichnen kann. Die größe des Rechtecks wird bei jeder Mausbewegung (mouseDragged event) automatisch angepasst. Das mache ich indem ich vor jeder Neuzeichnung des Rechtecks ein update(graphics) aufrufe. (aonsonsten würde ich das Bild mit Rechtecken vollmalen)
    Das Problem: Es flimmert wie sau.
    Wie kann ich nur den relevanten Teil updaten? Mit weiss übermalen kann ich das Rechteck nicht da sich darunter ja etwas anderes befindet..



  • Also erstmal kann man irgendwie den Clipping-Bereich setzen(Graphics.setClip(int x, int y, int width, int height) o. Graphics.setClip(Shape shape)). Also den Bereich, der als einzigstes aktualisiert werden soll. Das könnte schon ein bisschen helfen. Aber am besten ist es, Doppelpufferung einzubasteln. Ab 1.4 brauchst du das nicht mal mehr selber machen.

    http://java.sun.com/j2se/1.4.2/docs/api/java/awt/image/BufferStrategy.html


Anmelden zum Antworten