Zeichnen im GUI
Diese Seite setzt voraus, dass du einen Blick auf die Seite Grundlegende Rendering-Konzepte geworfen hast.
Die Klasse GuiGraphics ist die Hauptklasse, die für das Rendering im Spiel verwendet wird. Sie wird für das Rendern von Formen, Text und Texturen verwendet und, wie zuvor gesehen, für die Bearbeitung von PoseStacks und die Verwendung von BufferBuildern.
Formen zeichnen
Die Klasse GuiGraphics kann verwendet werden, um auf einfache Weise quadratische Formen zu zeichnen. Wenn du Dreiecke oder andere nicht-quadratische Formen zeichnen willst, musst du einen BufferBuilder verwenden.
Zeichnen von Dreiecken
Du kannst die Methode GuiGraphics.fill(...) verwenden, um ein gefülltes Rechteck zu zeichnen.
java
No lines matched.1

Zeichnen von Umrissen/Rahmen
Nehmen wir an, wir wollen das Rechteck, das wir gerade gezeichnet haben, umranden. Wir können die Methode GuiGraphics.renderOutline(...) verwenden, um die Umrandung zu zeichnen.
java
No lines matched.1

Zeichnen von individuellen Linien
Wir können die Methoden GuiGraphics.hLine(...) und DrawContext.vLine(...) vernwenden, um Linien zu zeichnen.
java
No lines matched.1

Der Scheren-Manager
Die Klasse GuiGraphics hat einen eingebauten Scheren-Manager. So kannst du dein Rendering ganz einfach auf einen bestimmten Bereich beschränken. Dies ist nützlich, um Dinge wie Tooltips oder anderen Elemente, die nicht außerhalb eines bestimmten Bereichs gerendert werden sollen, zu rendern.
Den Scheren-Manager nutzen
TIP
Scheren-Regionen können verschachtelt werden! Stelle sicher, dass du den Scheren-Manager genauso oft deaktivierst, wie du ihn aktiviert hast.
Um den Scheren-Manager zu aktivieren, verwende einfach die Methode GuiGraphics.enableScissor(...). Um den Scheren-Manager zu deaktivieren, verwende die Methode GuiGraphics.disableScissor().
java
No lines matched.1
Wie du siehst, wird der Farbverlauf nur innerhalb der Scheren-Region gerendert, obwohl wir der Oberfläche sagen, dass sie den Farbverlauf über die gesamte Oberfläche rendern soll.
Zeichnen von Texturen
Es gibt nicht den einen "richtigen" Weg, um Texturen auf einen Bildschirm zu zeichnen, da die Methode blit(...) viele verschiedene Überladungen hat. In diesem Abschnitt werden die häufigsten Anwendungsfälle behandelt.
Zeichnen einer ganzen Textur
Im Allgemeinen wird empfohlen, dass man die Überladung verwendet, die die Parameter textureWidth und textureHeight angibt. Der Grund dafür ist, dass die Klasse GuiGraphics diese Werte entgegennimmt, wenn du sie nicht angibst, was manchmal falsch sein kann.
Du musst auch angeben, welche Render-Pipeline deine Textur verwenden soll. Für einfache Texturen wird dies normalerweise immer RenderPipelines.GUI_TEXTURED sein.
java
No lines matched.1

Zeichnen eines Teils einer Textur
Hier kommen u und v ins Spiel. Diese Parameter geben die obere linke Ecke der zu zeichnenden Textur an, und die Parameter regionWidth und regionHeight geben die Größe des zu zeichnenden Teils der Textur an.
Nehmen wir diese Textur als Beispiel.

Wenn wir nur einen Bereich zeichnen wollen, der die Lupe enthält, können wir die folgenden Werte u, v, regionWidth und regionHeight verwenden:
java
No lines matched.1

Zeichnen von Text
Die Klasse GuiGraphics verfügt über verschiedene selbsterklärende Methoden zum Rendern von Texten, die hier aus Gründen der Kürze nicht behandelt werden.
Nehmen wir an, wir wollen "Hello World" auf die Oberfläche zeichnen. Wir können dazu die Methode GuiGraphics.GuiGraphics(...) verwenden.
INFO
Minecraft 1.21.6 und höher ändert die Textfarbe von RGB zu ARGB. Die Übergabe von RGB-Werten führt dazu, dass dein Text transparent gerendert wird. Hilfsmethoden wie ARGB.opaque(...) können verwendet werden, um während der Portierung RGB in ARGB umzuwandeln.
java
No lines matched.1


