2012-04-05 8 views
4

Ich habe einen Off-Screen BufferedImage, die zu groß, um auf einmal angezeigt werden. Also verwende ich getSubimage, um einen Teil des gesamten Bildes zu zeichnen. Ich frage mich, ob die Verwendung setClip auf der Graphics würde weniger Ressourcen verwenden. Die Dokumentation sagt, dass "Rendering-Operationen außerhalb des Clipping-Bereichs keine Wirkung haben". Welchen Unterschied würde es geben, wenn ich einen Clip verwende, der keinen Clip verwendet?Java: Würde setClip in Graphics effizienter sein?

Antwort

3

Wenn Sie einen Clip auf ein Graphics Objekt gesetzt – beispielsweise ein Rectangle(0, 0, 100, 100) – und dann mit dem gleichen Graphics Objekt – beispielsweise ein Bild zeichnet ein Bild bemessen 300x300 – den Teil des Bildes, die außerhalb des liegt Clip wird weggelassen. Nur die obere linke 100x100 Ecke des Beispiels würde gezeichnet werden.

Der Hauptvorteil ist, dass es beschleunigt den Zeichenprozess viel. Ich bin nicht ganz sicher über wie es macht es aber schneller; In der Tat habe ich das gerade untersucht.

In jedem Fall habe ich festgestellt, dass dies sehr praktisch bei der Gestaltung von Vollbild-Spiele ist. Je effizienter Sie Ihre Clips erstellen, die auf den Bildschirm gezogen werden, desto flüssiger läuft Ihr Spiel. Wenn die Bildschirmkomponenten für eine Weile nicht aktualisiert werden, bleibt der Clip leer und zeichnet keine Ressourcen für die Spiellogik auf.

+0

Noch ein Tipp: Ein Area-Objekt kann auch als Clip verwendet werden. Bereiche können hinzugefügt, subtrahiert, geschnitten usw. werden. Auf diese Weise können Sie Ihren Clip beliebig gestalten. – Pino

+0

Weiß jemand, ob die Beschleunigung eine Funktion des Bereichs des Clips oder der Fläche seiner Bounding Box ist? (Nachdenken über drawImage (..).) –