Image auf JPanel flackert

Status
Nicht offen für weitere Antworten.

Pfaeff

Aktives Mitglied
Hallo,

Ich habe das Problem, dass ich relativ frequentiert Polygone auf meinem Fenster zeichnen möchte.
Das Problem ist, dass es flackert. Ich weiß, dass das Problem schon oft dagewesen ist und es verschiedene Ansätze gibt. Ich habe jetzt diverse ausprobiert, allerdings führte keiner zum Erfolg.
Mein letzter Ansatz bestand daraus, eine von JPanel abgeleitete Klasse zu erzeugen und das Image, welches ich von außerhalb bemale in der PaintComponent Methode zu zeichnen.

Hier mal ein wenig Code:
Code:
import java.awt.Graphics;
import javax.swing.*;
import java.awt.Image;

class DrawPanel extends JPanel {
    private Image drawImage;
    public DrawPanel(Image drawImage) {
        this.drawImage = drawImage;   
        setDoubleBuffered(true);
    }
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);    
        g.drawImage(drawImage, 0, 0, this);        
    }
}
Code:
import java.awt.*;
import javax.swing.*;
import java.awt.Image;

public class PolygonTest extends JFrame {
    Polygon p = new Polygon();
    Graphics offscreenGraphics;
    Image offscreenImage;
    DrawPanel panel;
    
    public PolygonTest() {
        super("Polygon Test");
        setSize(640, 480);
        setVisible(true);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        setLocation((d.width - getSize().width) / 2, (d.height - getSize().height) / 2);   
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        // Offscreen painting (auf dieses Bild wird gezeichnet)
        offscreenImage = createImage(640, 480);
        offscreenGraphics = offscreenImage.getGraphics();   
        // Components (panel bekommt das Bild zum Zeichnen)
        panel = new DrawPanel(offscreenImage);
        add(panel);   

        // Polygon welches gezeichnet werden soll
        p.position = new Vector2d(200.0, 200.0);
        p.addVertex(new Vector2d(100.0, 50.0));
        p.addVertex(new Vector2d(100.0, -50.0));
        p.addVertex(new Vector2d(-100.0, -50.0));
        p.addVertex(new Vector2d(-100.0, 50.0));        
    }    
    // Mainloop - Hier geht die Action
    public void mainloop() {        
        double a = 0.0;
        while (true) {
            // Polygon drehen
            p.angle = Math.toRadians(a % 360);
            a += 0.01;
            // Zeichnen
            offscreenGraphics.clearRect(0, 0, 640, 480); // braucht tierisch lange
            p.draw((Graphics2D)offscreenGraphics);       
            // neu zeichnen
            repaint();
        }        
    }    
    public static void main(String[] args) {
        PolygonTest w = new PolygonTest();  
        w.mainloop();            
    }
}

Vielen Dank schonmal,

mfg
 

Marco13

Top Contributor
Pfaeff hat gesagt.:
Ich habe das Problem, dass ich relativ frequentiert Polygone auf meinem Fenster zeichnen möchte.
Eine while(true)-Schleife ohne Pause ist schon SEHR frequentiert. Ein
Code:
            try
            {
                Thread.sleep(10);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
in der Schleife könnte schon helfen...
 

Pfaeff

Aktives Mitglied
Das hatte ich zuerst auch vor, nur hab ich irgendwie sleep() net hinbekommen ;) Danke das ist schonmal eine Verbesserung ;) Allerdings hängt ja die Frequenz davon ab, wie rechenintensiv der Code in der Schleife ist. Aber es müsste doch auch möglich sein bei maximaler Frequenz ein flackerfreies Bild zu erhalten, oder?

mfg
 

Marco13

Top Contributor
Ja, ich bin nicht sicher, worauf du hinaus willst. Du kannst dir mal Quaxli's SPieletutorial ansehen, oder das, was man unter dem Stichwort "Active Rendering" so findet, aber ... eine While-Schleife wird pro Sekunde... ja, vielleicht 10 Millionen mal oder so durchlaufen. Ein while(true) ohne sleep macht darum i.a. keinen Sinn (außer in sehr speziellen Fällen)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Image laden und Speichern - Image wird auf JPanel nicht angezeigt AWT, Swing, JavaFX & SWT 4
M Swing Image in JPanel als Componente AWT, Swing, JavaFX & SWT 2
P nicht sichtbares JPanel / JFrame als Image speichern AWT, Swing, JavaFX & SWT 3
L JPanel als Image speichern AWT, Swing, JavaFX & SWT 3
G JFrame JPanel und Paint(Image)? AWT, Swing, JavaFX & SWT 6
D JPanel als Image speichern? AWT, Swing, JavaFX & SWT 5
K Image aus einem JPanel ziehen und speichern AWT, Swing, JavaFX & SWT 2
M Image aus JPanel erstellen AWT, Swing, JavaFX & SWT 2
R Image in JPanel/JLabel laden? AWT, Swing, JavaFX & SWT 11
MiMa Speichern von Image als JPG auf Festplatte AWT, Swing, JavaFX & SWT 9
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
K JavaFX Bildergalerie aus Image Ordner laden AWT, Swing, JavaFX & SWT 3
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
L AWT .gif image transparent machen AWT, Swing, JavaFX & SWT 3
kodela angezeigtes Image entfernen AWT, Swing, JavaFX & SWT 1
R Java, GUI, Hintergrundbild, Image, AWT, Swing, JavaFX & SWT 4
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
T Swing Buffered Image anzeigen AWT, Swing, JavaFX & SWT 45
L Image kann nicht gefunden werden AWT, Swing, JavaFX & SWT 1
S Stretch Image in ImageView AWT, Swing, JavaFX & SWT 4
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
L JavaFX Image mit Blureffect AWT, Swing, JavaFX & SWT 2
Bluedaishi JavaFX Button Image aus Datenbank AWT, Swing, JavaFX & SWT 13
F javaxt.io.Image getBufferedImage liefert null AWT, Swing, JavaFX & SWT 1
Yjuq JavaFX Custom Control - Image resize AWT, Swing, JavaFX & SWT 0
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
T Image Loader lädt Bild nicht AWT, Swing, JavaFX & SWT 10
J 2D-Grafik Background Image Klasse AWT, Swing, JavaFX & SWT 14
Q AWT TicTacToe Image auf Button hinzufügen AWT, Swing, JavaFX & SWT 5
BreakdownBob Swing JLabel verschwindet hinter Image AWT, Swing, JavaFX & SWT 2
L JavaFX leeres weißes Image - javafx.scene.image.Image AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Naxon89 JavaFX Image wird nicht korrekt geladen AWT, Swing, JavaFX & SWT 3
W Javafx - Image soll sich mit der Camera mitbewegen AWT, Swing, JavaFX & SWT 1
B Graphics to Image AWT, Swing, JavaFX & SWT 3
L Image in anderes kopieren AWT, Swing, JavaFX & SWT 0
T Swing Image wird nicht geladen AWT, Swing, JavaFX & SWT 1
S JavaFX Image Skalierung in Scrollpane, Scrollpane resized sich nicht AWT, Swing, JavaFX & SWT 5
I Image im PopupMenu vom SystemTray AWT, Swing, JavaFX & SWT 8
F JavaFX Position von Image angeben/verändern AWT, Swing, JavaFX & SWT 2
M JavaFX Image View Würfel berechnen AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
F Swing Image einem Button hinzufügen AWT, Swing, JavaFX & SWT 5
B Resize von Image nach Resize von Button AWT, Swing, JavaFX & SWT 1
T Image aus "nicht-src-ordner" AWT, Swing, JavaFX & SWT 5
vodkaz (javafx) Image Problem AWT, Swing, JavaFX & SWT 2
M Image in JTable einfügen AWT, Swing, JavaFX & SWT 9
M Image aus MS Access anzeigen lassen AWT, Swing, JavaFX & SWT 9
H Image im Array per Knopfdruck ändern AWT, Swing, JavaFX & SWT 6
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
G JavaFX Image vergrößern AWT, Swing, JavaFX & SWT 5
U Image mit Zeichenbereich rotieren AWT, Swing, JavaFX & SWT 3
P Speicherproblem SWT.Image in Nebula-Gallery AWT, Swing, JavaFX & SWT 3
L JavaFX: Bild in Image einlesen AWT, Swing, JavaFX & SWT 11
D Image soll langsam sichtbar werden AWT, Swing, JavaFX & SWT 4
D JLabel Image ausrichten AWT, Swing, JavaFX & SWT 2
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
bluerob Problem beim Image zeichnen via andere Klasse AWT, Swing, JavaFX & SWT 7
H Image Icon ersetzen AWT, Swing, JavaFX & SWT 8
I Image Button AWT, Swing, JavaFX & SWT 4
U IntBuffer zum Image konvertieren. AWT, Swing, JavaFX & SWT 9
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
T 2D-Grafik Slideshow (DoubleBuffering und Image transformieren/bewegen) AWT, Swing, JavaFX & SWT 6
K Swing Warum bleibt das Image immer gleich AWT, Swing, JavaFX & SWT 4
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
R Image laden sehr langsam AWT, Swing, JavaFX & SWT 7
D Image.getScaledInstance() vs. Netzwerkverbindung??? AWT, Swing, JavaFX & SWT 2
reibi SWT Image viewer AWT, Swing, JavaFX & SWT 2
lumo SWT Image funktion auf ImageDaten AWT, Swing, JavaFX & SWT 9
A Applet .gif in applet Image nicht animiert angezeigt AWT, Swing, JavaFX & SWT 4
M Image wird nicht neugezeichnet nach dem Wechsel AWT, Swing, JavaFX & SWT 2
lumo SWT Image Pattern AWT, Swing, JavaFX & SWT 5
P Image mehrfach in ein BufferedImage zeichnen AWT, Swing, JavaFX & SWT 7
T Image skaliert in Variable speichern AWT, Swing, JavaFX & SWT 6
S Image wird nicht (immer) in paintComponent gezeichnet? AWT, Swing, JavaFX & SWT 6
S Swing Image wird nicht geladen AWT, Swing, JavaFX & SWT 2
0 Mousecurser mit Image hinterlegen AWT, Swing, JavaFX & SWT 4
B Swing Drag&Drop mit Feedback (Image am Mauszeiger) AWT, Swing, JavaFX & SWT 7
N Java Choice Bilderausgabe - images - - image - AWT, Swing, JavaFX & SWT 2
D iText PdfPCell mit Image AWT, Swing, JavaFX & SWT 3
S 2D-Grafik Icon in Image (System Icons) AWT, Swing, JavaFX & SWT 2
S Button mit Image AWT, Swing, JavaFX & SWT 7
A Skaliertes Image pixelweise bearbeiten AWT, Swing, JavaFX & SWT 6
L Swing Image zur Laufzeit verändern AWT, Swing, JavaFX & SWT 6
F SWT GC drawText auf halbtransparentem Image AWT, Swing, JavaFX & SWT 21
G Swing JEdtitorPane und HTML Image Seite AWT, Swing, JavaFX & SWT 2
C Image mit Graphics2D zeichnen AWT, Swing, JavaFX & SWT 9
C Image performant skalieren AWT, Swing, JavaFX & SWT 5
D SWT Image Farbtiefe AWT, Swing, JavaFX & SWT 2
L Swing Auf unabhängiges Image-Objekt zeichnen AWT, Swing, JavaFX & SWT 8
lumo SWT Composite + Image + zeichnen AWT, Swing, JavaFX & SWT 4
V Ein Image als Button (nicht mit JButton(Icon)) AWT, Swing, JavaFX & SWT 5
D Image Viewer gesucht AWT, Swing, JavaFX & SWT 5
Kr0e Image schärfen AWT, Swing, JavaFX & SWT 2
R Bild drehen UND skalieren (Image bzw BufferedImage) AWT, Swing, JavaFX & SWT 5
T Image auf Image zeichnen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben