Drawing commands/de

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Grafische Primitive Zeichenbefehle)
 
Line 8: Line 8:
 
In den folgenden Beispielen wird davon ausgegangen, dass ''CommandList'' eine Zeichenfolgenvariable ist, die bereits im Skriptquellcode definiert wurde.
 
In den folgenden Beispielen wird davon ausgegangen, dass ''CommandList'' eine Zeichenfolgenvariable ist, die bereits im Skriptquellcode definiert wurde.
  
== Grafische Primitive Zeichenbefehle ==
+
== Grafische Zeichenbefehle ==
  
 
=== Ellipse ===
 
=== Ellipse ===

Latest revision as of 13:48, 3 March 2024


Die Zeichenbefehle sind Textzeichenfolgen, die miteinander verbunden werden, um eine größere Zeichenfolge von grafischen Anweisungen zu erstellen, die dann als Parameter an die dynamischen Texturen-Zeichenfunktionen übergeben wird. Mit zwei Ausnahmen gibt es Hilfsfunktionen wie [osDrawRectangle], die beim Erstellen der Befehlsliste helfen. Es ist etwas effizienter, die Zeichenfolge, die die Zeichenbefehle enthält, direkt zu manipulieren, da dies den Overhead mehrerer Funktionsaufrufe vermeidet (wenn auch mit einem diskutablen Verlust an Lesbarkeit).

Im Allgemeinen bestehen die Zeichenbefehle aus einem zeichensensitiven Token, das den Befehl identifiziert, gefolgt von einem oder mehreren durch Kommas getrennten Parametern und endet mit einem Trennzeichen (standardmäßig ein Semikolon). Leerzeichen um die Kommas und/oder das Trennzeichen sind erlaubt.

In den folgenden Beispielen wird davon ausgegangen, dass CommandList eine Zeichenfolgenvariable ist, die bereits im Skriptquellcode definiert wurde.

Contents

[edit] Grafische Zeichenbefehle

[edit] Ellipse

Ellipse float width, float height;
Zeichnet eine Ellipse mit der aktuellen Stiftgröße und -farbe.
Die Ellipse wird mit der angegebenen Breite und Höhe (in Pixeln) gezeichnet, zentriert auf einem Punkt, der (Breite/2) Pixel rechts von der aktuellen X-Position des Stifts und (Höhe/2) Pixel unterhalb der aktuellen Y-Position des Stifts liegt. Nachdem die Ellipse gezeichnet wurde, werden die Breiten- und Höhenwerte jeweils zur X- bzw. Y-Position des Stifts hinzugefügt.
Auch wenn die Parameter Gleitkommawerte akzeptieren, wird alles nach dem Dezimalpunkt ignoriert.

Beispiel:

CommandList += "Ellipse 100,100;";

[edit] FillEllipse

FillEllipse float width, float height;
Zeichnet eine gefüllte Ellipse mit der aktuellen Stiftgröße und -farbe.
Die Ellipse wird mit der angegebenen Breite und Höhe (in Pixeln) gezeichnet, zentriert auf einem Punkt, der (Breite/2) Pixel rechts von der aktuellen X-Position des Stifts und (Höhe/2) Pixel unterhalb der aktuellen Y-Position des Stifts liegt. Nachdem die Ellipse gezeichnet wurde, werden die Breiten- und Höhenwerte jeweils zur X- bzw. Y-Position des Stifts hinzugefügt.
Auch wenn die Parameter Gleitkommawerte akzeptieren, wird alles nach dem Dezimalpunkt ignoriert.

Beispiel:

CommandList += "FillEllipse 100,100;";

[edit] Polygon

Polygon string xpoints, string ypoints;
Zeichnet ein ungefülltes Polygon mit der aktuellen Stiftgröße und -farbe.
Das Polygon wird anhand einer Sequenz von x- und y-Punkten gezeichnet, die der Methode übergeben werden (in der Reihenfolge, in der sie angegeben sind), und schließt schließlich den ersten Punkt ein. Auch wenn die Parameter Gleitkommawerte akzeptieren, wird alles nach dem Dezimalpunkt ignoriert.

Beispiel:

CommandList += "Polygon 50,50,100,100,50,150,50;"; // Dies erstellt ein Dreieck mit den Punkten (50,50)(100,100)(150,50)

[edit] FillPolygon

FillPolygon string xpoints, string ypoints;
Zeichnet ein gefülltes Polygon mit der aktuellen Stiftgröße und -farbe.
Das Polygon wird anhand einer Sequenz von x- und y-Punkten (in Pixeln) gezeichnet, die der Methode übergeben werden (in der Reihenfolge, in der sie angegeben sind), und schließt schließlich den ersten Punkt ein. Auch wenn die Parameter Gleitkommawerte akzeptieren, wird alles nach dem Dezimalpunkt ignoriert.

Beispiel:

CommandList += "FillPolygon 50,50,100,100,50,150,50;"; // Dies erstellt ein Dreieck mit den Punkten (50,50)(100,100)(150,50)

[edit] Rectangle

Rectangle float width, float height;
Zeichnet ein ungefülltes Rechteck mit der aktuellen Stiftgröße und -farbe.
Das Rechteck wird mit der angegebenen Breite und Höhe (in Pixeln) gezeichnet, wobei die obere linke Ecke des Rechtecks an der aktuellen Position des Stifts platziert wird. Nachdem das Rechteck gezeichnet wurde, werden die Breiten- und Höhenwerte jeweils zur X- bzw. Y-Position des Stifts hinzugefügt.
Auch wenn die Parameter Gleitkommawerte akzeptieren, wird alles nach dem Dezimalpunkt ignoriert.

Beispiel:

CommandList += "Rectangle 150,75;";

[edit] FillRectangle

FillRectangle float width, float height;
Zeichnet ein Rechteck, das mit der aktuellen Stiftgröße und -farbe umrandet und gefüllt ist.
Das Rechteck wird mit der angegebenen Breite und Höhe (in Pixeln) gezeichnet, wobei die obere linke Ecke des Rechtecks an der aktuellen Position des Stifts platziert wird. Nachdem das Rechteck gezeichnet wurde, werden die Breiten- und Höhenwerte jeweils zur X- bzw. Y-Position des Stifts hinzugefügt.
Auch wenn die Parameter Gleitkommawerte akzeptieren, wird alles nach dem Dezimalpunkt ignoriert.

Beispiel:

CommandList += "FillRectangle 150,75;";

[edit] Image

Image float height, float width, string URL;
Holt ein Bild, das durch den URL-Parameter angegeben ist, und zeichnet es mit der angegebenen Höhe und Breite, wobei die obere linke Ecke des Bildes an der aktuellen Position des Stifts platziert wird. Nachdem das Bild gezeichnet wurde, werden die Breiten- und Höhenwerte jeweils zur X- bzw. Y-Position des Stifts hinzugefügt.
Wenn der URL auf eine ungültige Position zeigt, ein Bildtyp nicht von libgdi unterstützt wird oder ein Nicht-Bild-MIME-Typ vorliegt, wird nichts gezeichnet. Wenn einer oder beide der Parameter width oder height Null oder negativ sind, wird nichts gezeichnet, aber das Bild wird dennoch abgerufen.
Auch wenn die Parameter width und height Gleitkommawerte akzeptieren, wird alles nach dem Dezimalpunkt ignoriert.

Beispiel:

CommandList += "Image 293,62,<nowiki>http://opensimulator.org/skins/osmonobook/images/headerLogo.png</nowiki>;";

[edit] LineTo

LineTo float x, float y;
Zeichnet eine Linie von der aktuellen Position des Stifts zu den angegebenen Koordinaten mit der aktuellen Farbe und Breite des Stifts.
Nachdem die Linie gezeichnet wurde, werden die angegebenen Koordinaten zu den neuen aktuellen Koordinaten des Stifts.
Auch wenn die Parameter Gleitkommawerte akzeptieren, wird alles nach dem Dezimalpunkt ignoriert.

Beispiel:

CommandList += "LineTo 640,480;";

[edit] MoveTo

MoveTo float x, float y;
Aktualisiert die aktuelle Position des Stifts auf die in den Parametern angegebenen Koordinaten. Es wird nichts gezeichnet.
Auch wenn die Parameter Gleitkommawerte akzeptieren, wird alles nach dem Dezimalpunkt ignoriert.

Beispiel:

CommandList += "MoveTo 570,23;";

[edit] PenColour

PenColour string NewColor;
Setzt die Zeichenfarbe des Stifts entweder auf die angegebene benannte .NET-Farbe oder auf einen 32-Bit-Farbwert (formatiert als aarrggbb, der die acht Bit Alpha-, Rot-, Grün- und Blau-Kanäle repräsentiert).
Für volle Deckkraft verwenden Sie einen Alphawert von ff (z.B. ffff0000 für Rot); für verschiedene Transparenzgrade reduzieren Sie den Alphawert (z.B. 800000ff für halbtransparentes Blau).
Die Farbnamen und hexadezimalen Farbrepräsentationen sind nicht zeichensensitiv.

Beispiel:

CommandList += "PenColour MidnightBlue;";
CommandList += "PenColour ff191970;";

[edit] PenSize

PenSize float width;
Setzt die Stiftgröße auf ein Quadrat von width Pixeln Breite und width Pixeln Höhe. Wenn width eine ungerade Zahl ist, wird der Stift genau in den von den verschiedenen Zeichenbefehlen bereitgestellten Koordinaten zentriert; wenn es sich um eine gerade Zahl handelt, wird er etwas höher und weiter links als die tatsächlichen Koordinaten zentriert.
Auch wenn der Parameter einen Gleitkommawert akzeptiert, wird alles nach einem Dezimalpunkt ignoriert.

Beispiel:

CommandList += "PenSize 5;";

[edit] PenCap

PenCap string direction, string type;
Achtung: DIESE METHODE FUNKTIONIERT NUR IN .NET, MONO HAT KAPPEN NICHT KORREKT AUF LIBGDI+ IMPLEMENTIERT
Setzt den Anfang, das Ende oder beides des Stiftkappentyps auf einen Kap-Stil.
Mögliche Werte für die Richtung sind (nicht zeichensensitiv): "start", "end", "both"
Mögliche Werte für den Typ sind (nicht zeichensensitiv): "arrow","diamond","round","flat"(Standard)

Beispiel:

CommandList += "PenCap start,arrow;"; //Zeichnet einen Pfeil am Ende der nächsten gezeichneten Linie (mit LineTo)

[edit] Text-Zeichenbefehle

[edit] FontName

FontName string fontname;
Setzt die vom Text-Befehl verwendete Schriftart. Wenn die angegebene Schriftart nicht auf dem System installiert ist, wird die Standard-Schriftart (Arial oder deren lokale Entsprechung) verwendet.


Es gibt keine entsprechende Hilfsfunktion; wenn Sie die Schriftart ändern möchten, die vom Text-Befehl verwendet wird, müssen Sie die Zeichenfolge direkt bearbeiten.


Für Schriftfamilien, die verwendet werden können, siehe: www.w3schools.com/css/css_websafe_fonts.asp
Beispiel:
CommandList += "FontName Times New Roman;";

[edit] FontProp

FontProp string properties;
Setzt die Textanzeigeeigenschaften (Regular, Fett, Unterstrichen, Kursiv und Durchgestrichen), die von nachfolgenden Text-Aufrufen verwendet werden. Die Eigenschaften werden durch einzelne Buchstaben (R, B, U, I und S, jeweils) dargestellt, die durch Kommas getrennt sind. 'R' ist ein Sonderfall, der alle anderen Eigenschaften ausschaltet, während die anderen additiv sind.
Es gibt keine entsprechende Hilfsfunktion; wenn Sie die Eigenschaften der Schrift ändern möchten, die vom Text-Befehl verwendet wird, müssen Sie die Zeichenfolge direkt bearbeiten.

Beispiel:

CommandList += "FontProp B,I;";

[edit] FontSize

FontSize float size;
Setzt die Schriftgröße für nachfolgende Text-Befehle. Der size-Parameter repräsentiert die Schrifthöhe in Punkten.
Bitte beachten Sie, dass die Schrifthöhe in Punkten, nicht in Pixeln angegeben ist. Die resultierende Größe der Schrift in Pixeln kann je nach Systemeinstellungen variieren, insbesondere je nach dem Metrik "Punkte pro Zoll" des Anzeigesystems. Ein System mit 96 dpi erzeugt Text in unterschiedlichen Größen als ein System mit 120 dpi. Wenn eine präzise Textgröße erforderlich ist, sollten Sie in Betracht ziehen, die Funktion [osGetDrawStringSize] zu verwenden, um bei der Berechnung des richtigen FontSize-Werts zu helfen (aber beachten Sie, dass [osGetDrawStringSize] einen ganzzahligen Parameter für die Größe verwendet, während FontSize Gleitkommawerte verwendet).
Anders als bei den anderen Zeichenbefehlen ist alles nach einem Dezimalpunkt im size-Parameter relevant.
Wenn ein negativer FontSize-Parameter angegeben ist, wird der anschließend hinzugefügte Text auf dem Kopf und rechts von der Ursprungsposition angezeigt.

Beispiel:

CommandList += "FontSize 12;";

[edit] Text

Text string text;
Zeichnet die angegebene Textzeichenfolge mit der aktuellen Stiftfarbe unter Verwendung der aktuell definierten Schriftart, Größe und Eigenschaften (die standardmäßig auf regulär 14-Punkt Arial gesetzt sind).
Der Text wird mit der oberen linken Ecke des ersten Glyphen an der aktuellen Position des Stifts gezeichnet (es sei denn, beachten Sie, dass Glyphen innerhalb der Schriftart definiert sein können, um sich nach links von ihrem Ursprungspunkt zu erstrecken).
Wenn Sie ein Semikolon in den anzuzeigenden Text einbeziehen müssen, müssen Sie das Befehlstrennzeichen im extraParams-Parameter der osSetDynamicTexture*-Funktionen ändern. Dies erfordert jedoch, dass alle Befehle mit dem alternativen Trennzeichen beendet werden, und Sie können die Hilfsfunktionen nicht verwenden (die fest codiert sind, um ein Semikolon zu verwenden).
Der Text kann je nach Systemeinstellungen des auf dem Simulator ausgeführten Computers geglättet oder nicht geglättet sein. Darüber hinaus kann der Text bei Verwendung von LCD-Subpixel-Antialiasing (z.B. ClearType) farbige Ränder auf den geglätteten Pixeln haben, was zu einem weniger als optimalen Bild führen kann.
Bitte beachten Sie, dass die Stiftposition nicht nach diesem Aufruf aktualisiert wird.

Beispiel:

CommandList += "Text Niemand hier außer uns Flusspferden!;";
Personal tools
General
About This Wiki