Mein Szenario ist im Grunde, dass ich ein mathematisches Diagramm mit horizontalen und vertikalen Skalen zeichne. Bei jeder gegebenen Fenstergröße bleiben die Skalen statisch. Ich muss nur die Skalen ändern, wenn der Benutzer die Größe des Fensters ändert. Ich diskutierte daher, ob das Zeichnen der Skalen auf einem BufferedImage und das Aufrufen von drawImage besser ist als das Ausführen aller einzelnen drawXXX-Aufrufe, um die Skalen für jede Farbe zu konstruieren. Letzteres klingt nicht sehr effizient, da der Benutzer das Fenster wahrscheinlich beim Start neu skaliert (wenn das), aber der Kompromiss wäre der Speicher, der benötigt wird, um ein BufferedImage zu halten, das so groß wie 4K Bildschirmauflösung sein könnte alle Gedanken/Meinungen/Anregungen hat, würde ich schätzen sieJava Swing BufferedImage vs Direct Drawing
Antwort
Unter der Annahme, hören würden Sie TYPE_INT_ARGB
für das BufferedImage
Format, ein Bild verwenden, der in der Größe 33,18 MBs von „4k“ Auflösung (3840x2160) sein (das ist mega ist, würde Bytes) + vielleicht ein paar Bytes für Header-Informationen.
Also, wirklich, es wäre nicht so sehr eine Erinnerung Sorge. Aber denken Sie daran, dass Sie in jedem Fall entweder BufferedImage
oder das Graphics
Objekt neu streichen müssen, wenn es paint()
aufruft. Wahrlich, ich sehe keinen signifikanten Unterschied in der Effizienz.
Der einzige wirkliche Unterschied, den ich hier sehe, ist, dass mit BufferedImage
Sie den zusätzlichen Komfort seiner eingebauten Größenanpassung Fähigkeiten bekommen. Auf diese Weise können Sie Ihre Skalen immer auf die gleiche Weise auf das Bild malen (müssen keine Berechnungen auf der Grundlage der Fenstergröße machen) dann die Größe der BufferedImage
auf die Fenstergröße ändern und es kümmert sich um die Größe der Skalierung anpassen, um das Fenster zu passen .
- 1. Java Swing: repaint() vs
- 2. Java Swing revalidate() vs repaint()
- 3. JavaFX vs Swing-Rendering
- 4. Java: Drawing "Random" Sterne
- 5. collaborative drawing/live drawing
- 6. in Java Swing
- 7. Java BufferedImage Auflösung
- 8. Java Umwandlung Bild BufferedImage
- 9. Java BufferedImage Serialisierung
- 10. Java BufferedImage Drehen
- 11. Java BufferedImage Kartenfarben
- 12. Java Swing paintComponent() überschreiben
- 13. Set Bild src BufferedImage java
- 14. BufferedImage zu BMP in Java
- 15. Java: VolatileImage langsamer als BufferedImage
- 16. Java - Swing Bild funktioniert nicht
- 17. Swing-HTML-Rendering ändert sich bei Verwendung von BufferedImage
- 18. Drawing Rectangle in Java Zeigt Pixel Anomaly
- 19. Java Spiel 2D überlappende Schatten mit Swing
- 20. Leistung von INSERT vs INSERT/* + direct */
- 21. Redux Apis Call vs Direct Api Anrufe
- 22. Java Swing JButton alte Bild Lade
- 23. Java Swing KeyEvent vs keyPressed/keyReleased - verschiedene Tastencodes?
- 24. Java Swing schließt ein Fenster mit setDefaultCloseOperation Vs. addWindowListener
- 25. Wie lösche Zeilen in Java Swing?
- 26. Vista Glasrand-Effekt in Java Swing/AWT
- 27. Zeichnen auf Java-Schwergewichts-Swing-Komponenten
- 28. Zeichnen eines Kreises auf einer BufferedImage in Java
- 29. java BufferedImage Array-Daten ändert sich sofort
- 30. Falsche Graustufenwerte von Java BufferedImage Raster