[id] = CreateBrush(id, width, height[[, color], table])
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:
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:
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:
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:
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:
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:
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:
#PALETTE_AGA
. Siehe SetStandardPalette für eine Liste der integrierten Paletten.
(V9.0)
FillPen:
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:
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:
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:
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:
Draw
.
ID:
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:
Height:
SX:
RX:
RY:
SY:
UserData:
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:
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().
#BLACK
)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.