Übersicht über Durchlässigkeitsmasken
Aktualisiert: November 2007
Mit Durchlässigkeitsmasken können Sie Teile eines Elements oder visuellen Objekts transparent bzw. teilweise transparent machen. Um eine Durchlässigkeitsmaske zu erstellen, wenden Sie einen Brush auf die OpacityMask-Eigenschaft eines Elements oder Visual an. Der Pinsel wird dem Element oder visuellen Objekt zugeordnet, und mit dem Durchlässigkeitswert jedes Pinselpixels wird die verbleibende Durchlässigkeit jedes entsprechenden Pixels des Elements oder visuellen Objekts bestimmt.
Dieses Thema enthält folgende Abschnitte.
Vorbereitungsmaßnahmen
Erstellen von visuellen Effekten mit Durchlässigkeitsmasken
Erstellen einer Durchlässigkeitsmaske
Verwenden eines Farbverlaufs als Durchlässigkeitsmaske
Angeben von Farbverlaufsunterbrechungspunkten für eine Durchlässigkeitsmaske
Verwenden eines Bilds als Durchlässigkeitsmaske
Erstellen einer Durchlässigkeitsmaske aus einer Zeichnung
Verwandte Themen
Vorbereitungsmaßnahmen
In dieser Übersicht wird davon ausgegangen, dass Sie mit Brush-Objekten vertraut sind. Eine Einführung in die Verwendung von Pinseln finden Sie unter Übersicht über das Zeichnen mit Volltonfarben und Farbverläufen. Weitere Informationen über ImageBrush und DrawingBrush finden Sie unter Zeichnen mit Bildern, Zeichnungen und visuellen Elementen.
Erstellen von visuellen Effekten mit Durchlässigkeitsmasken
Eine Durchlässigkeitsmaske funktioniert so, dass ihre Inhalte dem Element oder visuellen Objekt zugeordnet werden. Mit dem Alphakanal von jedem Pinselpixel wird dann die verbleibende Durchlässigkeit der entsprechenden Pixel des Elements oder visuellen Objekts bestimmt. Die tatsächliche Pinselfarbe wird ignoriert. Wenn ein bestimmter Teil des Pinsels transparent ist, wird der entsprechende Teil des Elements oder visuellen Objekts transparent. Wenn ein bestimmter Teil des Pinsels nicht transparent ist, bleibt die Durchlässigkeit des entsprechenden Teils des Elements oder visuellen Objekts unverändert. Die von der Durchlässigkeitsmaske angegebene Durchlässigkeit wird mit allen Durchlässigkeitseinstellungen im Element oder visuellen Objekt kombiniert. Wenn z. B ein Element zu 25 Prozent deckend ist und eine Durchlässigkeitsmaske angewendet wird, die von vollständig deckend in vollständig transparent übergeht, ist das Ergebnis ein Element, das von 25 Prozent Durchlässigkeit in vollständige Transparenz übergeht.
Tipp
Obwohl mit den Beispielen in dieser Übersicht die Verwendung von Durchlässigkeitsmasken für Bildelemente gezeigt wird, kann eine Durchlässigkeitsmaske auf jedes Element oder Visual, einschließlich Panels und Steuerelementen, angewendet werden.
Mit Durchlässigkeitsmasken lassen sich interessante visuelle Effekte erstellen. Zum Beispiel können Sie Bilder oder Schaltflächen erstellen, die ausgeblendet werden, Elementen Texturen hinzufügen oder Farbverläufe kombinieren, um glasähnliche Oberflächen zu erzeugen. In der folgenden Abbildung wird die Verwendung einer Durchlässigkeitsmaske veranschaulicht. Mit einem Hintergrund im Schachbrettmuster werden die transparenten Teile der Maske angezeigt.
Beispiel für eine Durchlässigkeitsmaske
Erstellen einer Durchlässigkeitsmaske
Um eine Durchlässigkeitsmaske zu erstellen, erstellen Sie einen Brush und wenden ihn auf die OpacityMask-Eigenschaft eines Elements oder visuellen Elements an. Sie können jeden Typ von Brush als Durchlässigkeitsmaske verwenden.
LinearGradientBrush, RadialGradientBrush: Werden verwendet, um ein Element oder visuelles Element auszublenden.
Im folgenden Bild wird ein als Durchlässigkeitsmaske verwendeter LinearGradientBrush gezeigt.
Beispiel für eine Durchlässigkeitsmaske mit LinearGradientBrush
ImageBrush: Wird verwendet, um Textureffekte und weiche oder ausgefranste Randeffekte zu erstellen.
Im folgenden Bild wird ein als Durchlässigkeitsmaske verwendeter ImageBrush gezeigt.
Beispiel für eine Durchlässigkeitsmaske mit LinearGradientBrush
DrawingBrush: Wird verwendet, um komplexe Durchlässigkeitsmasken aus Mustern von Formen, Bildern und Farbverläufen zu erstellen.
Im folgenden Bild wird ein als Durchlässigkeitsmaske verwendeter DrawingBrush gezeigt.
Beispiel für eine Durchlässigkeitsmaske mit DrawingBrush
Die Farbverlaufspinsel (LinearGradientBrush und RadialGradientBrush) sind für die Verwendung als Durchlässigkeitsmaske besonders gut geeignet. Da ein SolidColorBrush einen Bereich mit einer einheitlichen Farbe füllt, werden damit keine optimalen Durchlässigkeitsmasken erzeugt. Wenn ein SolidColorBrush verwendet wird, entspricht dies dem Festlegen der OpacityMask-Eigenschaft des Elements oder visuellen Elements.
Verwenden eines Farbverlaufs als Durchlässigkeitsmaske
Um eine graduelle Füllung zu erstellen, werden zwei oder mehr Farbverlaufsunterbrechungspunkte angegeben. Jeder Farbverlaufsunterbrechungspunkt beschreibt eine Farbe und eine Position (weitere Informationen über das Erstellen und Verwenden von Farbverläufen finden Sie unter Übersicht über das Zeichnen mit Volltonfarben und Farbverläufen). Es handelt sich um den gleichen Vorgang wie bei der Verwendung eines Farbverlaufs als Durchlässigkeitsmaske. Nur werden durch den Farbverlauf der Durchlässigkeitsmaske nicht Farben gemischt, sondern Alphakanalwerte. Daher spielt die tatsächliche Farbe der Farbverlaufsinhalte keine Rolle. Nur der Alphakanal bzw. die Durchlässigkeit jeder Farbe ist relevant. Im Folgenden finden Sie ein Beispiel.
<!--With the opacity mask:-->
<Image
Width="200" Height="150"
Source="sampleImages\Waterlilies.jpg"
Margin="10"
HorizontalAlignment="Left"
Grid.Column="2" Grid.Row="3">
<Image.OpacityMask>
<LinearGradientBrush StartPoint="0.1,0.1" EndPoint="0.75,0.75">
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0" Color="Black"/>
<GradientStop Offset="1" Color="Transparent"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Image.OpacityMask>
</Image>
Angeben von Farbverlaufsunterbrechungspunkten für eine Durchlässigkeitsmaske
Im vorhergehenden Beispiel wird die systemdefinierte Farbe Black als Startfarbe des Farbverlaufs verwendet. Da alle Farben in der Colors-Klasse, mit Ausnahme von Transparent, vollständig deckend sind, kann mit ihnen einfach eine Startfarbe für eine Durchlässigkeitsmaske mit einem Farbverlauf definiert werden.
Zur zusätzlichen Kontrolle über Alphawerte beim Definieren einer Durchlässigkeitsmaske können Sie den Alphakanal von Farben mit der ARGB-Hexadezimalschreibweise in Markup oder mit der Color.FromScRgb-Methode angeben.
Angeben der Deckkraft einer Farbe in "XAML"
In Extensible Application Markup Language (XAML) wird die ARGB-Hexadezimalschreibweise verwendet, um die Deckkraft einzelner Farben anzugeben. Bei der ARGB-Hexadezimalschreibweise wird die folgende Syntax verwendet:
#aarrggbb
In der vorangehenden Zeile steht aa für einen zweistelligen Hexadezimalwert, der verwendet wird, um die Deckkraft der Farbe anzugeben. rr, gg und bb stehen jeweils für einen zweistelligen Hexadezimalwert, mit dem die Anteile von Rot, Grün und Blau in einer Farbe angegeben werden. Jede Hexadezimalziffer kann einen Wert von 0-9 oder A-F haben. 0 (null) ist der kleinste Wert, und F ist der größte. Der Alphawert 00 gibt eine Farbe an, die vollständig transparent ist, während ein Alphawert FF eine vollständig deckende Farbe erzeugt. Im folgenden Beispiel wird die ARGB-Hexadezimalschreibweise verwendet, um zwei Farben anzugeben. Die erste Farbe ist vollständig deckend, während die zweite vollkommen transparent ist.
<Canvas.OpacityMask>
<RadialGradientBrush>
<RadialGradientBrush.GradientStops>
<GradientStop Offset="0" Color="#FF000000"/>
<GradientStop Offset="1" Color="#00000000"/>
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</Canvas.OpacityMask>
Verwenden eines Bilds als Durchlässigkeitsmaske
Auch Bilder können als Durchlässigkeitsmaske verwendet werden. Im folgenden Bild wird ein Beispiel dargestellt. Mit einem Hintergrund im Schachbrettmuster werden die transparenten Teile der Maske angezeigt.
Beispiel für eine Durchlässigkeitsmaske
Um ein Bild als Durchlässigkeitsmaske zu verwenden, verwenden Sie einen ImageBrush, der das Bild enthalten soll. Wenn Sie ein Bild erstellen, das als Durchlässigkeitsmaske dienen soll, speichern Sie das Bild in einem Format, das mehrere Transparenzgrade unterstützt, z. B. Portable Network Graphics (PNG). Das folgende Beispiel enthält den Code, mit dem die vorherige Abbildung erstellt wurde.
<!-- With the Opacity Mask-->
<Image
Height="150"
Width="200"
Source="sampleImages/Waterlilies.jpg"
HorizontalAlignment="Left"
Margin="10"
Grid.Column="2" Grid.Row="1">
<Image.OpacityMask>
<ImageBrush ImageSource="sampleImages/tornedges.png"/>
</Image.OpacityMask>
</Image>
Verwenden eines gekachelten Bilds als Durchlässigkeitsmaske
Im folgenden Beispiel wird dasselbe Bild mit einem anderen ImageBrush verwendet, aber mit den Unterteilungsfeatures des Pinsels werden Bildkacheln als Quadrat mit 500 Pixeln Größe erzeugt.
<!-- With the Opacity Mask -->
<Image
Height="150"
Width="200"
Source="sampleImages/Waterlilies.jpg"
HorizontalAlignment="Left"
Margin="10"
Grid.Column="2" Grid.Row="2">
<Image.OpacityMask>
<ImageBrush
Viewport="0,0,50,50"
ViewportUnits="Absolute"
TileMode="Tile"
ImageSource="sampleImages/tornedges.png"/>
</Image.OpacityMask>
</Image>
Erstellen einer Durchlässigkeitsmaske aus einer Zeichnung
Zeichnungen können als Durchlässigkeitsmaske verwendet werden. Die Formen innerhalb der Zeichnung können selbst mit Farbverläufen, Volltonfarben, Bildern und sogar anderen Zeichnungen gefüllt werden. Im folgenden Bild wird ein Beispiel einer Zeichnung gezeigt, die als Durchlässigkeitsmaske verwendet wird. Mit einem Hintergrund im Schachbrettmuster werden die transparenten Teile der Maske angezeigt.
Beispiel für eine Durchlässigkeitsmaske mit DrawingBrush
Um eine Zeichnung als Durchlässigkeitsmaske zu verwenden, verwenden Sie einen DrawingBrush, der die Zeichnung enthalten soll. Das folgende Beispiel enthält den Code, mit dem die vorherige Abbildung erstellt wurde:
<!-- With the Opacity Mask-->
<Image
Grid.Row="4" Grid.Column="5"
Height="150"
Width="200"
Source="sampleImages/Waterlilies.jpg">
<Image.OpacityMask>
<DrawingBrush>
<DrawingBrush.Drawing>
<GeometryDrawing>
<GeometryDrawing.Brush>
<RadialGradientBrush>
<RadialGradientBrush.GradientStops>
<GradientStop Offset="0" Color="Black" />
<GradientStop Offset="1" Color="Transparent" />
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</GeometryDrawing.Brush>
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0.05,0.05 0.9,0.9" />
</GeometryDrawing.Geometry>
<GeometryDrawing.Pen>
<Pen Thickness="0.1" Brush="Black" />
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Image.OpacityMask>
</Image>
Verwenden einer gekachelten Zeichnung als Durchlässigkeitsmaske
Wie der ImageBrush kann auch der DrawingBrush so eingesetzt werden, dass die Zeichnung gekachelt angezeigt wird. Im folgenden Beispiel wird mit einem Zeichenpinsel eine gekachelte Durchlässigkeitsmaske erstellt.
<!-- With the Opacity Mask-->
<Button
Grid.Row="8" Grid.Column="5"
Height="100"
Width="200"
FontFamily="MS Gothic"
FontSize="16">
A Button
<Button.OpacityMask>
<DrawingBrush Viewport="0,0,0.25,0.25" TileMode="Tile">
<DrawingBrush.Drawing>
<GeometryDrawing>
<GeometryDrawing.Brush>
<RadialGradientBrush>
<RadialGradientBrush.GradientStops>
<GradientStop Offset="0" Color="Black" />
<GradientStop Offset="1" Color="Transparent" />
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</GeometryDrawing.Brush>
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0.05,0.05 0.9,0.9" />
</GeometryDrawing.Geometry>
<GeometryDrawing.Pen>
<Pen Thickness="0.1" Brush="Black" />
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Button.OpacityMask>
</Button>
Siehe auch
Konzepte
Zeichnen mit Bildern, Zeichnungen und visuellen Elementen
Übersicht über das Zeichnen mit Volltonfarben und Farbverläufen