Bezeichnung
CreateBrush -- erzeugt einen leeren Pinsel (V1.5)
Übersicht
[id] = CreateBrush(id, width, height[[, color], table])
Beschreibung
Dieser Befehl erzeugt einen neuen Pinsel mit der angegebenen Höhe height und Breite width und füllt ihn mit der angegebenen Farbe color. Wird keine Farbe angegeben, wird ein schwarzer Pinsel erzeugt. Wenn Sie beim Argument id Nil angeben, wird CreatBrush() für den Pinsel automatisch eine ID auswählen und Ihnen übergeben.

Ab Hollywood 4.5 gibt es ein optionales Tabellenargument table, womit Sie Transparenz für diesen Pinsel verwenden können. Die folgenden Tags können Sie der optionalen Tabelle übergeben:

Mask:
Setzen Sie diesen Tag auf True, wenn CreateBrush() eine Maske als Transparenz für den neuen Pinsel verwenden soll. Wenn dieser Tag True ist, muss AlphaChannel False sein. Der Standardwert ist False.

AlphaChannel:
Setzen Sie diesen Tag auf True, wenn CreateBrush() einen Alphakanal als Transparenz für den neuen Pinsel verwenden soll. Wenn dieser Tag True ist, muss Mask False sein. Der Standardwert ist False.

Clear:
Dieser Tag wird nur berücksichtigt, wenn entweder AlphaChannel oder Mask auf True gesetzt wurde. Ist dies der Fall, gibt Clear an, ob die Maske oder der Alphakanal vollständig transparent oder undurchsichtig sein soll. Der Standardwert ist False, was bedeutet, dass die neue Maske oder Alphakanal undurchsichtig ist.

Hardware:
Wenn Sie diesen Tag auf True setzten, wird Hollywood diesen Pinsel vollständig im Videospeicher erstellen. Dieser Hardware-Pinsel beschleunigt in Verbindung mit einem Hardware-Doppelpuffer das Zeichnen dieses Pinsels. Hardware-Pinsel unterliegen verschiedenen Einschränkungen. Siehe Hardware-Pinsel für Details. (V5.0)

Display:
Wenn Sie die ID eines Displays hier angeben, wird Hollywood einen Displayabhängigen-Hardware-Pinsel für Sie erstellen. Displayabhängige Hardware-Pinsel können nur auf dem Display, zu dem sie gehören, verwendet werden. Dieser Tag wird nur berücksichtigt, wenn der Tag Hardware auf True gesetzt wurde. Beachten Sie auch, dass Hollywoods eingebautes Display-Adaptermodul keine Displayabhängigen-Hardware-Pinsel unterstützt, aber Plugins können individuelle Display-Adaptermodule installieren, die displayabhängige Hardware-Pinsel unterstützen. Dieser Tag benutzt standardmäßig die ID des aktuell aktiven Displays. Siehe Hardware-Pinsel für Details. (V6.0)

SmoothScale:
Wenn Sie diesen Tag auf True setzen und der Tag Hardware ebenfalls auf True gesetzt wurde, verwendet Hollywood (oder das Display-Adaptermodul) bei der Transformation des neu erstellten Pinsels die bilineare Interpolation. Normalerweise wird beim Aufruf eines Pinseltransformationsbefehls wie ScaleBrush() oder RotateBrush() festgelegt, ob Interpolation verwendet werden soll oder nicht. Einige Display-Adaptermodule müssen diese Informationen jedoch bereits beim Erstellen des Hardware-Pinsels kennen. Aus diesem Grund ist dieser Tag hier, obwohl er wahrscheinlich nicht sehr nützlich ist, weil er nur in speziellen Situationen mit Display-Adaptermodule wie RebelSDL oder Hardware-Pinseln unter Android benötigt wird. Normalerweise können Sie einfach angeben, ob die Interpolation direkt im Transformationsbefehl verwendet werden soll oder nicht. Beachten Sie, dass SmoothScale nur unterstützt wird, wenn Hardware auf True gesetzt ist. (V8.0)

Palette:
Wenn dieser Tag auf den Identifikator einer Palette gesetzt ist, erstellt Hollywood einen Palettenpinsel für Sie. Paletten können mit Befehlen wie CreatePalette() oder LoadPalette() erstellt werden. Alternativ können Sie diesen Tag auch auf eine von Hollywoods integrierten Paletten setzen, z.B. #PALETTE_AGA. Siehe SetStandardPalette für eine Liste der integrierten Paletten. (V9.0)

FillPen:
Wenn der Tag Palette gesetzt ist (siehe oben), können Sie mit diesem Tag den Stift einstellen, der zum Füllen des Pinselhintergrunds verwendet werden soll. Beachten Sie, dass der Parameter color, der an CreateBrush() übergeben wird, ignoriert wird, wenn Palette True ist. Aus diesem Grund ist dieser Tag hier, damit Sie einen Stift angeben können, der beim Initialisieren der Pixel des Pinsels verwendet wird. Voreingestellt ist 0. (V9.0)

TransparentPen:
Wenn Palette auf True gesetzt ist, kann mit diesem Tag ein Stift angegeben werden, der im neuen Pinsel transparent werden soll. Voreingestellt ist #NOPEN, was bedeutet, dass kein transparenter Stift vorhanden sein sollte. (V9.0)

Depth:
Mit diesem Tag können Sie die gewünschte Farbtiefe des Pinsels festlegen. Wenn dieser Wert kleiner oder gleich 8 ist, erstellt CreateBrush() einen Palettenpinsel. Sie können den Tag Palette auch zusammen mit dem Tag Depth angeben. Wenn die angegebene Palette mehr Farben als die angegebene Tiefe hat, werden diese Farben verworfen. Wenn er weniger Farben enthält, werden die nicht verwendeten Stifte auf Schwarz gesetzt. Standardmäßig erstellt CreateBrush() 24-Bit- oder 32-Bit-Pinsel, je nachdem, ob der Tag AlphaChannel auf True oder False gesetzt ist. (V10.0)

Callback:
Wenn Sie diesen Tag auf eine Callback-Funktion setzen, erstellt CreateBrush() einen benutzerdefinierten Pinsel für Sie. Im Vergleich zu normalen Pinseln werden benutzerdefinierte Pinsel von einer Callback-Funktion unterstützt, die Hollywood immer dann aufruft, wenn sich die Abmessungen des Pinsels ändern oder eine Transformation angewendet wird. Auf diese Weise können Sie Pinsel erstellen, die sich dynamisch an neue Auflösungen und Transformationen anpassen. Dies ist dem, was Vektorpinsel tun, sehr ähnlich, außer dass Sie mit benutzerdefinierten Pinseln die volle Kontrolle über den Prozess übernehmen können, da Ihre Callback-Funktion das gesamte Zeichnen übernimmt. Ihre Callback-Funktion wird auch sofort von CreateBrush() aufgerufen, um das anfängliche Zeichnen des Pinsels durchzuführen.

Benutzerdefinierte Pinsel können sehr nützlich sein, um Ihren eigenen Vektorpinseltyp zu implementieren. Da benutzerdefinierte Pinsel die Möglichkeit haben, sich selbst neu zu zeichnen, wenn sich ihre Auflösung oder Transformation ändert, können Sie sie verwenden, um Pinsel zu erstellen, die ohne Qualitätsverlust skaliert oder transformiert werden können. Der Grund ist, da Ihre Callback-Funktion die Grafiken immer dann neu zeichnet, wenn sich die Pinselabmessungen ändern, anstatt nur die Pixel mit herkömmlicher verlustbehafteter Größenveränderung zu skalieren. Dies ist besonders nützlich, wenn Sie die Ebenenskalierung mit benutzerdefinierten Grafiken verwenden. Wenn Sie benutzerdefinierte Pinsel für eine Ebene verwenden, können Sie sicher sein, dass diese Ebene verlustfrei auf alle Auflösungen skaliert wird.

Die Callback-Funktion, die Sie in Callback angeben, erhält als Parameter 1 eine Nachricht mit den folgenden initialisierten Feldern:

Action:
Initialisiert auf Draw.
ID:
Identifikator des Pinsels, mit dem gezeichnet werden soll. Beachten Sie, dass dies nicht dieselbe ID ist wie der Pinsel, den Sie mit CreateBrush() erstellt haben. Ihre Callback-Funktion muss SelectBrush() auf dem in ID angegebenen Pinsel aufrufen und die gewünschten Grafiken unter Berücksichtigung der aktuellen Transformation (siehe unten) auf den Pinsel zeichnen. Sie können auch SelectMask() und SelectAlphaChannel() für den Pinsel aufrufen, falls Sie die Transparenzeinstellungen anpassen müssen.
Width:
Aktuelle Breite des Pinsels.
Height:
Aktuelle Höhe des Pinsels.
SX:
Gibt den Skalierungsbetrag auf der x-Achse an. Wenn er negativ ist, wird das Bild auf der y-Achse gespiegelt. Dieser Wert wird niemals 0 sein.
RX:
Gibt den Grad der Drehung auf der x-Achse an. Dies kann 0 sein.
RY:
Gibt den Grad der Drehung auf der y-Achse an. Dies kann 0 sein.
SY:
Gibt den Skalierungsbetrag auf der y-Achse an. Wenn er negativ ist, wird das Bild auf der x-Achse gespiegelt. Dieser Wert wird niemals 0 sein.
UserData:
Dies wird auf die Benutzerdaten gesetzt, die Sie im Tag UserData des optionalen Tabellenarguments übergeben haben, das von CreateBrush() unterstützt wird (siehe unten). Wenn Sie an CreateBrush() keine Benutzerdaten übergeben haben, wird dieser Tag nicht gesetzt.

(V10.0)

UserData:
Wenn Sie den Tag Callback gesetzt haben (siehe oben), können Sie diesen Tag verwenden, um einige Benutzerdaten zu speichern, die an Ihre Callback-Funktion weitergegeben werden, wenn Hollywood sie aufruft. Die Benutzerdaten können von beliebigem Typ sein. (V10.0)

Siehe auch CreateGradientBrush().

Eingaben
id
ID des neuen Randpinsels oder Nil für die automatische ID-Zuweisung
width
Breite des Pinsels
height
Höhe des Pinsels
color
optional: RGB-Farbe für den Pinsel (voreingestellt ist #BLACK)
table
optional: Tabelle für weitere Optionen (siehe oben) (V4.5)
Rückgabewerte
id
optional: Identifikator des Pinsels; Wird nur zurückgegeben werden, wenn Sie Nil als Argument 1 angegeben haben (siehe oben)
Beispiel
CreateBrush(2, 320, 256, #BLUE)
Der obige Code erstellt einen neuen blauen Pinsel mit der ID 2 und den Dimension von 320x256.


CreateBrush(2, 320, 256, #BLUE, {AlphaChannel = True, Clear = True})
Der obige Code erstellt einen neuen blauen Pinsel mit ID 2 in einer Größe von 320x256. Der neue Pinsel erhält auch einen Alphakanal, dessen Transparenz auf 100% gesetzt wird. Wenn Sie also den neuen Pinsel anzuzeigen, werden Sie nichts sehen, weil der Pinsel zur Zeit vollkommen transparent ist.


CreateBrush(1, 320, 240, 0, {AlphaChannel = True, Clear = True, Callback =
    Function(msg)
        SelectBrush(msg.id, #SELMODE_COMBO)
        SetFormStyle(#ANTIALIAS)
        SetFillStyle(#FILLCOLOR)
        Ellipse(0, 0, msg.width / 2, msg.height / 2, #RED)
        EndSelect
    EndFunction
})
ScaleBrush(1, 640, 480)
DisplayBrush(1, 0, 0)
Der obige Code zeigt, wie Sie einen benutzerdefinierten Pinsel erstellen. Er erstellt einen Pinsel, der in seiner Callback-Funktion eine Ellipse mit Anti-Aliasing zeichnet. Da die Callback-Funktion immer dann aufgerufen wird, wenn sich die Abmessungen des Pinsels ändern, skaliert die Ellipse wie ein echtes Vektorbild und ist in allen Auflösungen perfekt scharf.

Navigation zeigen