WPF - 元素是不可见的,但具有阴影效果

时间:2017-02-26 17:10:36

标签: c# wpf xaml shadow effects

我需要一个效果,我的元素不可见,但实际上会掉阴影。有可能这样做,如果是这样,怎么样?

编辑:如果这是不可能的,我可以将我的元素(图片和标签)用作masks,这样只有阴影可见。我正在追寻一些剪影效果。

另一个编辑:

这是按钮本身:

    <Button x:Name="login_button" Grid.Row="1" Grid.Column="1" Template="{DynamicResource TileTemplate}"
             Margin="5,10,5,10">
        <Grid>
            <Grid.Effect>
                <DropShadowEffect BlurRadius="0" 
                                  Color="{Binding ElementName=login_button, Path=BorderBrush.Color,UpdateSourceTrigger=PropertyChanged}"
                                  Opacity="{Binding ElementName=login_button, Path=BorderBrush.Opacity,UpdateSourceTrigger=PropertyChanged}"
                                  Direction="0" ShadowDepth="0">
                </DropShadowEffect>
            </Grid.Effect>
            <Grid.RowDefinitions>
                <RowDefinition Height="2*"/>
                <RowDefinition Height="4*"/>
            </Grid.RowDefinitions>
            <Image Source="pack://application:,,,/textures/logos/lock.png"
                   VerticalAlignment="Stretch" HorizontalAlignment="Left" Grid.Row="0"
                   Margin="10,10,10,10" Visibility="Visible" OpacityMask="White">
            </Image>
            <Label Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Bottom"
                   HorizontalContentAlignment="Left" VerticalContentAlignment="Bottom"
                   Content="LOG IN" FontSize="40" FontFamily="CenturyGothicRegual"
                   Margin="10,10,10,10">
                <!--<Label.Foreground>
                    <SolidColorBrush Color="{Binding ElementName=login_button, Path=BorderBrush.Color,UpdateSourceTrigger=PropertyChanged}"
                                     Opacity="{Binding ElementName=login_button, Path=BorderBrush.Opacity,UpdateSourceTrigger=PropertyChanged}"/>
                </Label.Foreground>-->
                <Label.Style>
                    <Style TargetType="Label">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType=Button}}" Value="True">
                                <Setter Property="Foreground">
                                    <Setter.Value>
                                        <SolidColorBrush Color="#FFD1A139" />
                                    </Setter.Value>
                                </Setter>
                                <Setter Property="Opacity" Value="0.8" />
                            </DataTrigger>
                            <DataTrigger Binding="{Binding IsPressed, RelativeSource={RelativeSource AncestorType=Button}}" Value="True">
                                <Setter Property="Foreground">
                                    <Setter.Value>
                                        <SolidColorBrush Color="#FFF0A300" />
                                    </Setter.Value>
                                </Setter>
                                <Setter Property="Opacity" Value="0.8" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Label.Style>
            </Label>
        </Grid>
    </Button>

因此,阴影效果正好应用于元素本身,并且计划是只有严酷的阴影可见。我的目的是躲避图像着色(并导入各种图像)。

1 个答案:

答案 0 :(得分:0)

当时我找到了一个解决方案,Visual Studio Blend有一个很好的路径和形状功能。如果你绘制一个路径并合并它,它将是分辨率独立的,非常适合我追求的轮廓效果。