SelectMask(id[, type, frame])
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().
id
angegebenen Grafikobjekt; kann
#BRUSH
, #ANIM
, #BGPIC
oder #LAYER
sein (voreingestellt ist #BRUSH
) (V4.5)#ANIM
oder #LAYER
(falls die angegebene Ebene eine Animationsebene
ist) angeben wurde (V4.5)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 AusgabezielDer 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.