Bezeichnung
SelectMask -- wählt eine Maske als Ausgabeziel (V2.0)
Übersicht
SelectMask(id[, type, frame])
Beschreibung
Dieser Befehl wählt die Maske des in id angegebenen grafischen Objekts als das aktuelle Ausgabeziel. Dies bedeutet, dass alle Grafikdaten von Hollywood in diese Maske gezeichnet werden. Masken sind immer mit einem Bildobjekt verbunden, beispielsweise einem Pinsel oder einer Animation.

In der Standardeinstellung arbeitet SelectMask() immer mit den Masken von Pinseln. Um die Masken von Animationen und BGPics zu bearbeiten, können Sie ab Hollywood 4.5 im optionalen Argument type #ANIM oder #BGPIC übergeben. Wenn Sie #ANIM in type angeben, müssen Sie auch das Einzelbild der Animation festlegen. Siehe SelectAnim() für weitere Informationen. Wenn Sie #BGPIC in type verwenden, beachten Sie, dass Sie nur die Masken von BGPics ändern können, die derzeit nicht einem Display zugewiesen sind. Ab Hollywood 4.7 können Sie als type auch #LAYER verwenden, um die Maske einer Ebene zu verändern. Falls die Ebene eine Animebene ist, müssen Sie auch die Nummer des Einzelbildes angeben.

Masken werden verwendet, um die Transparenz eines graphischen Objekts zu steuern und tragen keine Farbinformationen in sich. Jedes Pixel in einer Maske kann nur zwei verschiedene Zustände annehmen: 1, was bedeutet, dass dieses Pixel sichtbar, und 0, dass es nicht sichtbar ist. Daher müssen Sie Hollywood informieren, ob die Zeichnungsbefehle sichtbare (1) oder unsichtbare Pixel (0) in die Maske zeichnen soll. Dies wird durch die Verwendung des Befehls SetMaskMode() festgelegt. Das color Argument, welches mehrere Hollywood-Befehle (wie Box() oder Circle()) erwarten, ist bei Masken überflüssig. Sie müssen nur den Befehl SetMaskMode() verwenden.

Wenn die in id angegebene Grafik noch keine Maske hat, wird sie automatisch erstellt, wenn Sie einen Befehl aufrufen, der in die Maske zeichnen will. Wenn eine Maske durch SelectMask() erstellt wird, wird sie zunächst vollständig undurchsichtig sein.

Wenn Sie den Maskendarstellungsmodus verlassen möchten, und wieder in den Displaymodus zurück zu gehen, rufen Sie einfach den Befehl EndSelect() auf.

Wenn Sie eine Maske nicht mehr benötigen, können Sie sie aus dem Pinsel entfernen, indem Sie den Befehl SetBrushTransparency() mit dem Argument #NOTRANSPARENCY aufrufen oder einfach DeleteMask() verwenden.

Sie können keine Pinsellinks mit diesem Befehl erstellen, da die Grafikdaten des Pinsels geändert werden. Es ist auch verboten Befehle aufzurufen, die die Abmessungen des Pinsels oder der Anim ändern, die derzeit als Ausgabeziel verwendet werden. Z.B. können Sie die Befehle ScaleBrush() oder ScaleAnim() nicht aufrufen, um den Pinsel/die Anim zu skalieren, die im Moment als Ausgabeziel definiert sind. Darüber hinaus darf für Animationen während dieser Zeit auch der Befehl SelectMask() nicht benutzt werden, wenn die Animation von der Festplatte geladen wird. Animationen müssen sich immer vollständig im Speicher befinden, wenn Sie mit SelectMask() in Einzelbilder zeichnen möchten.

Nur Befehle, die Grafikdaten direkt ausgeben, können nach SelectMask() verwendet werden. Auch animierte Befehle wie MoveBrush() oder DisplayBrushFX() dürfen nicht aufgerufen werden, während SelectMask() aktiv ist.

Bitte beachten Sie, dass Grafikobjekte nicht eine Maske und einen Alphakanal haben können, womit nur eine Transparenzeinstellung möglich ist. Wenn Sie also auf ein Grafikobjekt mit diesem Befehl zugreifen, das einen Alphakanal hat, wird dieser Alphakanal gelöscht werden.

Wenn Sie bei type #LAYER verwenden und die angegebene Ebene ist eine Vektorebene, wird SelectMask() die Ebene zuerst auf eine Pinselebene rastern. Siehe SelectLayer für Details.

Siehe auch EndSelect(), SelectAlphaChannel(), SelectBrush(), SelectLayer(), SelectBGPic() und SelectAnim().

Eingaben
id
Grafikobjekt, dessen Maske als Ausgabeziel verwendet wird
type
optional: Typ des in id angegebenen Grafikobjekt; kann #BRUSH, #ANIM, #BGPIC oder #LAYER sein (voreingestellt ist #BRUSH) (V4.5)
frame
optional: Einzelbild der Animation; nur erforderlich, wenn als Typ #ANIM oder #LAYER (falls die angegebene Ebene eine Animationsebene ist) angeben wurde (V4.5)
Beispiel
w = GetAttribute(#BRUSH, 1, #ATTRWIDTH)
h = GetAttribute(#BRUSH, 1, #ATTRHEIGHT)

SetFillStyle(#FILLCOLOR)
SelectMask(1)               ; wählt die Maske als Ausgabeziel
SetMaskMode(#MASKINVISIBLE) ; mit unsichtbaren Pixel zeichnen
Cls                         ; löscht alle Pixel
SetMaskMode(#MASKVISIBLE)   ; mit sichtbaren Pixel zeichnen
Box(0, 0, w, h, 0, 20)      ; zeichnet Rechteck mit runden Kanten
EndSelect                   ; wählt Display als Ausgabeziel
Der obige Code erstellt ein Rechteck mit abgerundeten Kanten auf die Maske des Pinsels 1. Wenn Pinsel 1 jetzt angezeigt wird, erscheint es mit abgerundeten Kanten.

Navigation zeigen