TextOut(x, y, text$[, table])
text$ angegebenen Text an der Stelle
aus, die durch die Koordinaten x und y festgelegt ist.
Sie hat den Vorteil, dass Sie Hollywoods spezielle Konstanten
als Koordinaten benutzen (z.B. #CENTER, #BOTTOM...) was bei
dem Befehl Print() nicht möglich ist, da Locate() diese Richtungskonstanten
nicht verarbeiten kann.
Wenn Ebenen aktiviert sind, fügt dieser Befehl eine neue Ebene
vom Typ #TEXTOUT dem Ebenenstapel hinzu.
Ab Hollywood 2.5 können Sie die Textformatierungen von Hollywood
in der Zeichenkette text$ an CreateTextObject() übergeben.
Mit diesen Formatmarkierungen können Sie die Schriftart und
Farbe Ihres Textes on-the-fly ändern. Formatmarkierungen beginnen
und enden immer mit einer eckigen Klammer ('['). Wenn Sie nur
eine eckige Klammer ausgeben möchten, müssen Sie zwei eckige
Klammern ('[[') verwenden. Bei nur einer eckigen Klammer erwartet
Hollywood immer eine Formatmarkierung. Weitere Informationen
zu diesem Thema finden Sie im Kapitel Textformatierungen.
Seit Hollywood 4.0 hat sich die Syntax von diesem Befehl etwas
verändert. Während die alte Syntax noch wegen der Kompatibilität
unterstützt wird, sollten Sie für neue Skripts die aktuelle
Syntax verwenden, welche die Tabelle table als Argument 4
akzeptiert. Die Tabelle kann die folgenden Elemente enthalten:
Align:
#LEFT
#RIGHT
#CENTER
#JUSTIFIED
Für Align ist #LEFT voreingestellt.
WordWrap:TextOut()
einen automatischen Wortumbruch für Sie durchführen. Mit diesem
Tag können Sie eine maximale Breite für Ihren Text angeben.
TextOut() wird dann den Wortumbruch verwenden, um sicherzustellen,
dass kein Text über dieses Limit hinausgeht. Wenn Sie dieses
Argument nicht oder auf 0 setzen (was auch voreingestellt ist),
ist der Text so breit wie er benötigt wird. Ab Hollywood 9.1
können Sie auch bedingte Bindestriche oder Leerzeichen mit Nullbreite
verwenden, um den Wortumbruch anzupassen. Da es sich jedoch
um Unicode-Zeichen handelt, müssen Sie sicherstellen, dass Sie
in diesem Fall die UTF-8-Codierung verwenden.
Encoding:text$ anzugeben. Voreingestellt ist die Standardcodierung
für die Textbibliothek, welche mit dem Befehl SetDefaultEncoding()
festgelegt ist. Siehe SetDefaultEncoding für Details. (V4.7)
Color:TextOut() die Farbe, die mit dem
Befehl SetFontColor() festgelegt wurde.
Pen:#PALETTEMODE_PEN ist, kann dieser Tag
verwendet werden, um den Stift festzulegen, der zum Zeichnen
des Textes verwendet werden soll. Wenn der Palettenmodus #PALETTEMODE_PEN
ist und Pen nicht angegeben ist, wird stattdessen der Stift
verwendet, der mit SetDrawPen() gesetzt
wurde. (V9.0)
Linespacing:
Charspacing:
Tabs:TextOut()
übergeben, Tabulatoren enthält und Sie diesen Tag nicht setzen,
werden alle Tabulatoren in Leerzeichen umgewandelt. (V9.0)
ListMode:True, um TextOut() in den Listenmodus
zu versetzen. Im Listenmodus können Sie mit TextOut() geordnete
und ungeordnete Listen erstellen. Im Listenmodus müssen Sie
in der Zeichenkette, die Sie an TextOut() übergeben, Tabulatoren
verwenden, um die gewünschte Einrückung zu signalisieren. Standardmäßig
verwenden alle Listenelemente das in DefListBullet angegebene
Aufzählungszeichen. Es ist auch möglich, TextOut() anzuweisen,
benutzerdefinierte Aufzählungszeichen zu verwenden, indem Sie
den Tag ListBullet setzen. Dasselbe gilt für die Einrückung,
den Versatz und Abständen der Liste, wobei die Standardwerte
mit DefListIndent, DefListOffset sowie DefListSpacing und
die benutzerdefinierten Werte mit ListIndent und ListOffset
festgelegt werden können. Weitere Informationen zu all diesen
Optionen finden Sie weiter unten. Beachten Sie auch, dass sich
ListMode und Tabs gegenseitig ausschließen. Sie können nicht
beide gleichzeitig verwenden. (V9.0)
DefListBullet:TextOut() im Listenmodus
befindet. Dies kann auf ein Unicode-Zeichen (als numerischer
Codepunkt, nicht als Zeichenkette!) oder eine der folgenden
Konstanten gesetzt werden:
#BULLET_DASH:
#BULLET_CROSS:
#BULLET_CIRCLE:
#BULLET_HOLLOWCIRCLE:
#BULLET_BOX:
#BULLET_CHECKMARK:
#BULLET_ARROW:
#BULLET_DIAMOND:
#BULLET_NUMERIC:
#BULLET_NUMERICSINGLE:
#BULLET_NUMERICDOUBLE:
#BULLET_LALPHA:
#BULLET_LALPHASINGLE:
#BULLET_LALPHADOUBLE:
#BULLET_UALPHA:
#BULLET_UALPHASINGLE:
#BULLET_UALPHADOUBLE:
#BULLET_LROMAN:
#BULLET_LROMANSINGLE:
#BULLET_LROMANDOUBLE:
#BULLET_UROMAN:
#BULLET_UROMANSINGLE:
#BULLET_UROMANDOUBLE:
#BULLET_NONE:
Wenn Sie in Ihrer Liste verschiedene Arten von Aufzählungszeichen
verwenden müssen, müssen Sie stattdessen den Tag ListBullet
verwenden. Weitere Informationen finden Sie unten.
Beachten Sie auch, dass der Startversatz von nummerierten Aufzählungstypen
wie #BULLET_NUMERIC, #BULLET_LALPHA usw. mit den Tags DefListOffset
und ListOffset festgelegt werden kann. Weitere Informationen
finden Sie unten.
Standardmäßig verwenden Aufzählungszeichen die Farbe, welche mit SetFontColor() eingestellt wurde. Um eine andere Farbe einzustellen, verwenden Sie den Befehl SetBulletColor(). Siehe SetBulletColor für Details. (V9.0)
ListBullet:TextOut() extrahiert dann für jede neue
Liste, die er beginnt, einen neuen Aufzählungstyp aus Ihrer
Tabelle. Wie bei DefListBullet können die einzelnen Elemente
in der Tabelle, die Sie an ListItems übergeben, entweder numerische
Unicode-Codepunkte oder vordefinierte #BULLET_XXX-Konstanten
sein, wie oben beschrieben. Wenn in ListBullet mehr Listen
als Tabellenelemente vorhanden sind, wird das in DefListBullet
angegebene Aufzählungszeichen verwendet. (V9.0)
DefListIndent:ListIndent erfolgen.
Siehe unten für weitere Details. (V9.0)
ListIndent:TextOut() extrahiert dann für jede neue Liste, die er beginnt,
einen neuen Einzugswert aus Ihrer Tabelle. Wenn in ListIndent
mehr Listen als Tabellenelemente vorhanden sind, wird die in
DefListIndent angegebene Standardeinrückung verwendet. (V9.0)
DefListOffset:#BULLET_NUMERIC
oder #BULLET_LALPHA verwenden, können Sie diesen Tag verwenden,
um einen Startversatz für die Nummerierung anzugeben. Beachten
Sie, dass Versätze ab 0 gezählt werden. Wenn Sie hier also einen
Versatz von 0 angeben, beginnt die Nummerierung bei #BULLET_NUMERIC
bei 1 und bei #BULLET_ALPHA bei "a". Der Standardwert für dieses
Tag ist 0. Sie können auch benutzerdefinierte Versatzstufen
für bestimmte Listen angeben. Dies kann mithilfe des Tags ListOffset
erfolgen, siehe unten für weitere Details. (V9.0)
ListOffset:TextOut() extrahiert
dann für jede neue Liste, die er startet, einen neuen Listen-Versatz-Wert
aus Ihrer Tabelle. Wenn in ListOffset mehr Listen als Tabellenelemente
vorhanden sind, wird der in DefListOffset angegebene Standardlisten-Versatz
verwendet. (V9.0)
DefListSpacing:ListSpacing erfolgen, siehe unten für
weitere Einzelheiten. (V9.1)
ListSpacing:TextOut() extrahiert dann einen neuen Abstandswert aus
Ihrer Tabelle für jede neue Liste, die neu beginnt. Wenn in
ListSpacing mehr Listen als Tabellenelemente vorhanden sind,
wird der in DefListSpacing angegebene Standardabstandswert
verwendet. (V9.1)
FrameMode:TextOut() im Listenmodus verwendet wird und Ebenen aktiviert
sind, hat die resultierende Ebene vom Typ #TEXTOUT mehrere Einzelbilder,
die Sie mit NextFrame() oder allen anderen
Ebenenbefehlen, die Animationsebenen unterstützen, durchlaufen
können. Dadurch ist es möglich, nacheinander durch die Listeneinträge
zu blättern oder einen Eintrag nach dem anderen anzuzeigen.
Das erste Einzelbild enthält immer alle Listenelemente. Der
Inhalt der anderen Einzelbilder hängt davon ab, was im Tag FrameMode
angegeben wurde. Dieser Tag kann wie folgt eingestellt werden:
#FRAMEMODE_SINGLE:
#FRAMEMODE_FULL:
Wenn nicht angegeben, ist FrameMode standardmäßig auf #FRAMEMODE_FULL
eingestellt. Beachten Sie, dass Sie mit dem Tag Frame (siehe unten)
festlegen können, welches Einzelbild anfänglich sichtbar sein
soll. (V9.0)
Frame:TextOut() im Listenmodus verwendet wird und Ebenen aktiviert
sind, hat die resultierende Ebene vom Typ #TEXTOUT mehrere Einzelbilder,
die Sie mit NextFrame() oder allen anderen
Ebenenbefehlen, die Animationsebenen unterstützen, durchlaufen
können. Dadurch ist es möglich, nacheinander durch die Listeneinträge
zu blättern oder einen Eintrag nach dem anderen anzuzeigen.
Das erste Einzelbild enthält immer alle Listenelemente. Der
Inhalt der anderen Einzelbilder hängt davon ab, was im Tag FrameMode
angegeben wurde (siehe oben). Der Tag Frame kann verwendet
werden, um das Einzelbild anzugeben, das zuerst sichtbar sein
soll. Einzelbilder werden ab 1 gezählt. (V9.0)
SimpleList:True gesetzt ist, extrahiert TextOut() nicht nacheinander
die Konfiguration der Listenaufzählungszeichen aus den Tabellen
ListBullet usw., sondern verwendet einfach statisch das Element
am angegebenen Tabulatorindex. D.h. Tabulatorposition 1 verwendet
immer das Aufzählungszeichen, das bei Index 1 in der Tabelle
ListBullet angegeben ist, Tabulatorposition 2 verwendet das
Aufzählungszeichen, das bei Index 2 in der Tabelle ListBullet
angegeben ist usw. Dies schränkt Ihre Flexibilität ein, kann
aber die Arbeit erleichtern, wenn Sie immer dieselbe Konfiguration
für jede Tabulatorposition haben wollen. (V9.1)
Darüber hinaus kann das optionale Tabellenargument table
auch eine oder mehrere der Standard-Tags zum Zeichnen
enthalten. Siehe Standard-Tags zum Zeichnen für Details.
Beachten Sie, dass Hollywood nur westlichen Standard von links nach rechts basierten Text auf horizontalen Linien ausgerichtet unterstützt. Von rechts nach links und vertikalem Text wird derzeit nicht unterstützt.
Beachten Sie auch, dass beim Schreiben auf ein palettenbasiertes
Ziel und wenn der Palettenmodus auf #PALETTEMODE_PEN eingestellt
ist, dieser Befehl mit dem Stift über SetDrawPen()
schreibt anstelle der Schriftfarbe, welche mit dem Befehl SetFontColor()
oder dem obigen Tag Color gesetzt wurde.
TextOut(#CENTER, #CENTER, "Hello World!")Der obige Code gibt "Hello World!" in der Mitte des Displays aus.
For Local k = 100 To 600 Step 100 Do
Line(k, 0, k, 480, #RED)
TextOut(0, 0, "One\tTwo\tThree\tFour\tFive\tSix",
{Tabs = {100, 200, 300, 400, 500}})
Dieser Code zeigt, wie man Tabulatoren mit TextOut() verwendet.
SetFont(#SANS, 18)
TextOut(0, 0, "Pizzas\n"..
"\tProsciutto\n"..
"\tFunghi\n"..
"\tMargarita\n"..
"Drinks\n"..
"\tAlcoholic\n"..
"\t\tBeer\n"..
"\t\tWine\n"..
"\tNon-alcoholic\n"..
"\t\tCoke\n"..
"\t\tWater",
{ListMode = True,
DefListBullet = #BULLET_CIRCLE,
ListBullet = {#BULLET_DASH}})
Der obige Code zeigt, wie man eine Liste mit TextOut() erstellt.