2017-09-26 3 views
0

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

0

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 .