2009-06-11 11 views
14

In meiner Anwendung möchte ich ein transparentes Fenster haben, aber vollständig undurchsichtig Kindersteuerelemente darunter. WPF macht jedoch alle Kinder transparent.undurchsichtiges Element in einem transparenten in WPF

Siehe XAML unten. Das Raster ist halbtransparent 50% wie erwartet, aber das Rechteck in ihm ist transparent nicht undurchsichtig, auch wenn die Deckkraft = "1" ist. Gibt es einen Weg, dies zu erreichen?

<Window x:Class="WpfApplication10.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window1" AllowsTransparency="True" Height="300" ResizeMode="NoResize" Width="300" WindowStyle="None" Background="Transparent" > 

    <Border BorderBrush="black" BorderThickness="7" CornerRadius="10"> 
     <Grid Background="Red" Opacity="0.5"  > 

     <Rectangle Width="100" Height="100" Fill="white" Opacity="1"/> 

    </Grid> 
    </Border></Window> 

Dank, cellik

Antwort

19

Der Grund, warum das Rechteck nicht vollständig undurchsichtig ist, weil Ihr Behälter (das Gitter) eine Opazität von 0,5 hat und Opazität zu den untergeordneten Objekten geerbt wird.

Stattdessen versuchen, den Hintergrund Pinsel des Grid zu etwas halbtransparent wie das Ändern:

<Grid Background="#66ff0000"> 

Dies sollte Ihnen ein halbtransparentes Gitter und ein vollständig undurchsichtiges Rechteck.

+0

Danke, diese Antwort funktioniert wirklich! – ariso

+0

Das Rechteck ist voll opak, weil die Farbe "weiß" ist. Wenn die Farbe beispielsweise rot ist, ist das Rot nicht 100% deckend rot. Haben Sie eine Lösung, um das 100% rote Rechteck zu erhalten? –

+0

Solange die Deckkraft des Rasters nicht angegeben ist, sollte es auch mit einem 100% roten Rechteck arbeiten. Beachten Sie, dass sich die Änderung auf das Raster und nicht auf das Rectangle-Tag bezieht. – micahtan

Verwandte Themen