Java2D auf Knopfdruck weiterzeichnen

Status
Nicht offen für weitere Antworten.

Koravel

Mitglied
Ich betrete gerade das Land des Zeichnens auf Panels...

Ich habe eine Klasse, die von JPanel erbt.
Ich zeichne etwas mit paintComponent() darauf, ein paar Striche.

Bis hierhin wars einfach...
Jetzt möchte ich aber, dass ich auf einen JButton drücke, und da etwas neues hinzukommt zu der Zeichnung...
Ich habe mir (so versuchsweise) eine Methode in der Klasse DrawMePanel (extends JPanel) gemacht namens drawPoint(float x, float y).
Ich möchte, dass ich diese Methode aufrufen kann und dann eben dort ein Punkt hinzugefügt wird, aber da ist mein Problem.
Als Punkt nehme ich eine Linie von 1 Pixel (kennt ihr eine bessere Methode?)
Wie füge ich das zur zeichnung hinzu?
Mein Versuch war folgender:
Code:
  public void drawPoint(float x, float y) {
    this.getGraphics().drawLine(x, y, x, y);
    repaint();
  }
aber aus einem mir unverständlichen Grund passieren dann 2 Dinge:
1. Ist mein Computer dann für einige Sekunden völlig ausgelastst, sogar zu sehr ausgelastet um Mausbewegungen richtig darzusetellen.
2. Kleine Zusatzinfo, ich habe das alles in einem JInternalFrame, wenn ich den Frame mit der DesktopPane beenden weill, kommt ein JOptionPane.showConfirmMessage() hoch. Genau diese Message hat dann keinen Text mehr, ist dunkler und nur noch 1 Button ist zu sehen, der Ja Button (Standardbutton) der Nein-Button wird erst sichtbar, wenn man auf ihn klickt.

Und ich sitze gerade immerhin an einen 2GHz Rechner mit 1GB Ram, der sollte das eigentlich packen...

Könnt ihr mir weiterhelfen?
ich verzweifle :autsch:
 
B

Beni

Gast
Benutz doch ein BufferedImage. Von diesem Image kannst du jederzeit ein Graphics bekommen (das auch funktioniert), und auf dem Image zeichnen.
Danach rufst du "repaint()" auf, und zeichnest das Image auf das Panel.

Code:
BufferedImage image = ...
Graphics graphics = image.createGraphics();

public void paintPixel( int x, int y ){
  graphics.drawLine( x, y, x, y );
  repaint();
}

public void paintComponent( Graphics g ){
  g.drawImage( 0, 0, image, this ); // oder so ähnlich 
}

mfg Beni
 

Koravel

Mitglied
oh, geschickte Sache, werds nachher mal ausprobieren :D

Kann ich so ein BufferedImage nicht mehr resizen, wenn ich es einmal platziert habe?
Ich würde das gern so groß haben, dass es immer den gesamten Bereich des JPanels ausfüllt, wie kann ich das machen?
Praktisch wäre es sogar, wenn es direktes Skaling ist... geht das irgendwie
 
B

Beni

Gast
Du kannst ein neues Image machen, und das alte draufzeichnen :wink:
Und mit dieser Methode kannst du ein Bild auch strecken (sieht aber vielleicht nicht so toll aus).

mfg Beni
 

Koravel

Mitglied
Danke für die Hilfe :)

Das mit dem Image ging mir zu langsam, ich zeichne einige Hundert Punkte (also Lines von x,y bis x,y) auf das Bild, und mit dem BufferedImage hat man den Bildaufbau mit den Augen mitgverfolgen können.

Dann habe ich ein Canvas genommen, das geht schneller.
Aber noch immer nicht so schnell, wie ich gern hätte.

Mein Gedanke ist folgendes:
Man nehme 2 Layer, einen im Vordergrund, einen nicht angezeigt im Hintergrund.
Zeichenoperationen nehme ich auf demn Hintergrundlayer vor, und wenn der fertig ist, vertausche ich die Layer.
Dann ist die bemalte Ebene vorn, und die andere Hinten.

Also eine Doppelpufferung.

Aber als ich das machen wollte gab es einen StackOverflow.
Geht das überhaupt mit Canvas? (Müsste ja, weil gl4java nimmt AFAIK auch Canvas, und GLAnimCanvas läst sich Doppelpuffern)
Habt ihr einen Ansatz, wie ich das machen könnte? ???:L
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Java2d mit GLG2D beschleunigen AWT, Swing, JavaFX & SWT 0
J Swing Vertikales Zeichnen eines Strings mit Java2D AWT, Swing, JavaFX & SWT 1
X JInternalFrame vor Java2D-Zeichnung langsam bzw. Gui friert ein AWT, Swing, JavaFX & SWT 1
B Java2D - Zeichenreihenfolge AWT, Swing, JavaFX & SWT 3
M Swing + Java2D Sichtfeld bewegen verhält sich träge AWT, Swing, JavaFX & SWT 4
T Java2D and SVG vs PNG AWT, Swing, JavaFX & SWT 12
S Java2D/Graphics2D in Android..? AWT, Swing, JavaFX & SWT 2
C Java2D Transparenz geht bei einfärben verloren AWT, Swing, JavaFX & SWT 7
K 2D-Grafik Java2D mit Hardware-Unterstützung? AWT, Swing, JavaFX & SWT 5
J Stufenlos vergrösserbare Fonts in Java2D? AWT, Swing, JavaFX & SWT 5
M java2D/jogl interoperability AWT, Swing, JavaFX & SWT 22
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
Kr0e Allgemeine Frage zu Java2D (Eigene Impl.) AWT, Swing, JavaFX & SWT 18
S Transformationen in Java2D..? AWT, Swing, JavaFX & SWT 4
MrMilti Gezeichnete Java2D Elemente mit Events versehen AWT, Swing, JavaFX & SWT 3
D Zeichen ein Pixel mit Java2D AWT, Swing, JavaFX & SWT 15
L Java2D AWT, Swing, JavaFX & SWT 2
izoards JavaFX Background Task warten auf Knopfdruck AWT, Swing, JavaFX & SWT 4
D JavaFX Fläche auf Knopfdruck blinken lassen AWT, Swing, JavaFX & SWT 3
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
V JFreeChart: Tooltip auf Knopfdruck anzeigen AWT, Swing, JavaFX & SWT 2
H Image im Array per Knopfdruck ändern AWT, Swing, JavaFX & SWT 6
F Swing Auf Knopfdruck ein Fenster schliessen AWT, Swing, JavaFX & SWT 12
H String auf Knopfdruck in JPanel zeichnen. AWT, Swing, JavaFX & SWT 6
B Panels wechseln auf Knopfdruck AWT, Swing, JavaFX & SWT 17
Weiti Swing Animationen - Drehung aller Komponenten auf Knopfdruck AWT, Swing, JavaFX & SWT 12
B bin am verzweifeln, will auf knopfdruck durch ne überprüfung die labels unsichtbar machen AWT, Swing, JavaFX & SWT 2
M Animation auf JPanel per Knopfdruck AWT, Swing, JavaFX & SWT 12
D Schließen der GUI auf knopfdruck AWT, Swing, JavaFX & SWT 7
E JDialog auf Knopfdruck schliessen AWT, Swing, JavaFX & SWT 2
S Object auf Knopfdruck dem Frame hinzufügen AWT, Swing, JavaFX & SWT 2
G Internationalisierung auf Knopfdruck AWT, Swing, JavaFX & SWT 4
T SWT:Tabelle auf Knopfdruck mit aktualisierten Daten zeichnen AWT, Swing, JavaFX & SWT 9
F Bild auf Knopfdruck AWT, Swing, JavaFX & SWT 4
G ActionListener - Texte ändern per Knopfdruck AWT, Swing, JavaFX & SWT 4
V Auf Knopfdruck malen ?????? AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben