Bezeichnung
SelectAlphaChannel -- wählt einen Alphakanal als Ausgabeziel (V2.0)
Übersicht
SelectAlphaChannel(id[, type, frame])
Beschreibung
Dieser Befehl wählt den Alphakanal des in id angegebenen Grafikobjekts als aktuelles Ausgabeziel. Dies bedeutet, dass alle Grafikdaten in diesen Alphakanal gezeichnet werden. Alphakanäle sind in Hollywood keine eigenständige Objekte; sie gehören immer zu einem Bildobjekt, einem Pinsel oder einer Animation.

In der Standardeinstellung arbeitet SelectAlphaChannel() immer mit den Alphakanälen von Pinseln. Ab Hollywood 4.5 können Sie jedoch auch in die Alphakanäle von Animationen und BGPics zeichnen. Sie müssen dann beim optionalen Argument type #ANIM oder #BGPIC angeben. Wenn Sie #ANIM verwenden, müssen Sie auch das Einzelbild angeben. Siehe SelectAnim() für weitere Informationen. Wenn Sie #BGPIC in type angeben, beachten Sie, dass Sie nur den Alphakanal eines BGPics ändern können, das zur Zeit nicht einem Display zugewiesen ist. Ab 4.7 können Sie auch als type #LAYER angeben, um den Alphakanal einer Ebene zu ändern. Beachten Sie, dass wenn die Ebene eine Animebene ist, müssen Sie auch die Nummer des Einzelbildes angeben.

Alphakanäle können verwendet werden, um jedem Pixel seine eigene Transparenzeinstellung zu geben. Es stehen 256 verschiedene Transparenzstufen für jedes Pixel zur Verfügung. Ein Alphakanalwert von 0 bedeutet, dass das Pixel vollständig transparent ist und bei einem Wert von 255 das Pixel undurchsichtig ist. Alle Grafikbefehle von Hollywood wenden eine statische Alphakanalintensität auf den Alphakanal des Grafikobjekts an. Sie können diese Intensität mit dem Befehl SetAlphaIntensity() konfigurieren. Alternativ können Sie den Alphadarstellungsmodus in den Vanilla-Kopiermodus einstellen. Dies geschieht mit dem Befehl SetAlphaIntensity() und mit #VANILLACOPY als Argument. Dann werden alle Grafikbefehle von Hollywood, die Alphakanalpixel ausgeben, die exakten Alphakanaldaten auf den Alphakanal des Pinsels kopieren. Dieser Vanilla-Kopiermodus ist eine neue Funktionalität von Hollywood 2.5.

Das Argument color, welches mehrere Hollywood-Befehle (wie Box() oder Circle()) erwarten, ist überflüssig, wenn sie Alphakanäle bearbeiten. Für die Einstellung der Intensität benutzen Sie den Befehl SetAlphaIntensity(), wenn Sie mit Alphakanälen arbeiten.

Alphakanäle werden in der Regel für die schönen Glanzeffekte im Hintergrund oder für Antialiasing-Kanten verwendet. Wenn Sie anstelle von unterschiedlichen Transparenzstufen nur zwei Möglichkeiten brauchen, nämlich transparente und undurchsichtige Pixel, sollten Sie SelectMask() verwenden, weil Masken schneller gezeichnet werden können. 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, welches eine Maske hat, wird diese Maske zuerst gelöscht werden.

Wenn die in id angegebene Grafik noch keinen Alphakanal hat, wird automatisch einer erstellt, wenn Sie einen Befehl aufrufen, der auf den Alphakanal zeichnen will. Der Alphakanal wird undurchsichtig erstellt, das heißt, jedes Pixel wird eine Alphaintensität von 255 haben (0% transparent). Um den Alphakanal-Darstellungsmodus zu beenden und wieder zurück zur Displayausgabe zu gelangen, rufen Sie einfach den Befehl EndSelect() auf.

Wenn Sie einen Alphakanal nicht mehr benötigen, sollten Sie ihn mit dem Befehl DeleteAlphaChannel() vom Pinsel entfernen.

Sie können keine Pinsellinks mit diesem Befehl erstellen, da die Grafikdaten zurzeit geändert werden. Es ist auch verboten Befehle aufzurufen, die die Abmessungen des Pinsels/der Animation ändern, die derzeit als Ausgabeziel verwendet werden. Dies betrifft z.B. die Befehle ScaleBrush() oder ScaleAnim(). Darüber hinaus ist es für Animationen auch nicht erlaubt, SelectAlphaChannel() zu verwenden, wenn sie von der Festplatte geladen wird. Animationen müssen sich immer vollständig im Speicher befinden, wenn Sie mit SelectAlphaChannel() zeichnen möchten.

Nur Befehle, die statische Grafiken ausgeben, können verwendet werden, wenn SelectAlphaChannel() aktiv ist. Sie können keine animierte Befehle wie MoveBrush() oder DisplayBrushFX() benutzen, wenn SelectAlphaChannel() aktiviert wurde.

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

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

Eingaben
id
Grafikobjekt, dessen Alphakanal 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
CreateBrush(1, 256, 50, #RED)    ; erstellt 256x50 großen Pinsel
SelectAlphaChannel(1)            ; Ausgabeziel ist der Alphakanal
For k = 255 To 0 Step -1
   SetAlphaIntensity(k)          ; Setzt Intensität auf k
   Line(255 - k, 0, 255 - k, 49) ; zeichnet Linien mit verschiedenen ...
Next                             ; ... Intensitäten
EndSelect                        ; Display ist wieder das Ausgabeziel

DisplayBrush(1, #CENTER, #CENTER)
Dieser Code erstellt einen Pinsel mit einer Breite von 256 Pixel und 25 Linien. Anschließend werden die 256 verschiedenen Transparenzstufen in den Pinsel gezeichnet. Das Ergebnis wird ein rotes Rechteck sein, welches glatt in das Hintergrundbild übergeht. Bitte beachten Sie, dass Sie einen Bildschirm mit 24 Bit für den vollen Augenschmaus benötigen. Bildschirme mit 15 und 16 Bit haben nicht genügend Farben, um alle unterschiedlichen Ebenen anzuzeigen.

Navigation zeigen