Java: basic Plotten, zeichnen einen Punkt/Punkt/pixel
Muss ich einfach haben ein panel, in denen ich in der Lage sein zu zeichnen. Ich möchte in der Lage sein, zu zeichnen pixel für pixel.
ps: ich brauche keine Linien/Kreise andere primitive.
pps: die Grafik-Bibliothek ist nicht wirklich wichtig, es kann sein, awt, swing, qt.. nichts. Ich möchte nur etwas haben, das ist in der Regel vertreten durch Bufferedimage oder somethign wie, dass hier legen Sie die Farben der einzelnen Pixel und dann machen Sie es auf den Bildschirm.
- Leider ist java keine Methode zum zeichnen eines einzelnen Punktes, Sie müssen stattdessen verwenden
drawLine
mit ein und demselben Punkt sowohl start & beenden. - das ist schade, und nicht das hinzufügen von eine schrecklich overhead? Ich möchte nur in der Lage sein, um die Anzeige großer Datenmengen..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schlage ich vor, eine
BufferedImage
für, die, dargestellt werden.... in einer
JLabel
- wie in diese Antwort.Natürlich, sobald wir eine Instanz von
BufferedImage
können wirsetRGB(..)
.Ein Beispiel für einen Weg, es zu tun:
und dann von innerhalb der überschriebenen paintComponent(Graphics g)
Wenn Sie ehrlich brauchen zum Rendern von pixel-by-pixel, ich habe das getan in der Länge für den hotspot-Visualisierungs-software schrieb ich für ein Forschungslabor.
Was Sie wollen, ist BufferedImage.setRGB(..) - wenn Sie zeichnen, pixel-by-pixel, ich nehme an, Sie haben implementiert einen Algorithmus, machen die RGB-Werte für jedes pixel (ähnlich wie wir es mit den heat-maps). Dies ist, was wir in einer alten IE-kompatiblen Applet wieder in den Tag. Arbeitete wie ein Charme und war relativ schnell gegeben, was es macht.
Leider jeder Zeit ändern der RGB-Werte direkt in ein BufferedImage, es wird nicht gecached durch die backing-video-Speicher.
Seit Java 7, aber ich habe gehört, dass die zugrunde liegenden J2D Umsetzung wird der Versuch einer re-caching das Bild in den Videospeicher einmal die Manipulationen aufhören und Darstellung erfolgt über-und-über wieder -- für Beispiel, während Sie die rendering-heat-map ist es nicht beschleunigt, aber sobald es wiedergegeben wird, ziehen Sie das Fenster auf und die Arbeit mit der app, die backing-Bilddaten kann wieder beschleunigt.
Wenn Sie möchten, etwas schnell zu tun, können Sie einfach die Graphics-Methoden setColor und drawLine. Zum Beispiel:
Habe ich diese Technik verwendet und es war nicht furchtbar langsam. Ich habe nicht verglichen mit BufferedImage-Objekte.
Ein wenig spät hier, aber Sie können immer tun es die Art und Weise Java-Spiel Programmierer tun, mit einem
Screen
Klasse:Und dann in deiner main-Klasse:
Das sollte funktionieren, denke ich.