wpf - 如何在像谷歌按钮这样的 wpf 按钮周围创建阴影效果

标签 wpf button styles shadow

我正在尝试在 wpf 中创建一个 google 按钮。我发现以下链接指定了 google 的按钮 css 样式

Google button css style

现在我也在网上搜了一下,发现这个样式很像google的按钮

<Style x:Key="GoogleGreyButton" TargetType="{x:Type Button}">
    <Setter Property="Background" Value="#FFF5F5F5"/>
    <Setter Property="BorderBrush" Value="#FFDCDCDC"/>
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="Foreground" Value="#FF666666"/>
    <Setter Property="FontWeight" Value="Bold"/>
    <Setter Property="FontSize" Value="11"/>
    <Setter Property="FontFamily" Value="Arial"/>
    <Setter Property="HorizontalContentAlignment" Value="Center"/>
    <Setter Property="VerticalContentAlignment" Value="Center"/>
    <Setter Property="Padding" Value="8,7"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border Name="border" 
                    BorderThickness="{TemplateBinding BorderThickness}"
                    Padding="{TemplateBinding Padding}" 
                    BorderBrush="{TemplateBinding BorderBrush}" 
                    CornerRadius="1" 
                    Background="{TemplateBinding Background}">
                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>

                </Border>

                <ControlTemplate.Triggers>
                    <!--TODO: Set the right colors-->
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="border" Property="BorderBrush" Value="#FFC6C6C4" />
                        <Setter Property="Foreground" Value="#FF020202" />
                    </Trigger>
                    <Trigger Property="IsPressed" Value="True">
                       ` <!--Some setters here--> `

                    </Trigger>
                    <Trigger Property="IsEnabled" Value="false">
                        <Setter Property="Foreground" Value="#ADADAD"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Trigger Property="IsPressed" Value="True">我需要像上面一样产生一些阴影效果Google button css style ,我可以知道我怎样才能做到这一点吗?

最佳答案

您可以通过更改一些 BorderThickness 来产生阴影下降效果。尝试这样的事情:

<Trigger Property="IsMouseOver" Value="True">
    <Setter TargetName="border" Property="BorderBrush" Value="DarkGray" />
    <Setter Property="Foreground" Value="Black" />
    <Setter Property="BorderThickness" Value="1,1,2,2" />
</Trigger>

请注意,这样做可能会稍微弄乱您的布局,因为它会更改按钮的总宽度和高度,因此当悬停按钮时,它周围的其他控件可能会“颠簸”一下。

如果您想使用适当的阴影,可以像这样为按钮添加阴影:
<Button>
    <Button.BitmapEffect>
        <DropShadowBitmapEffect Color="Black" Direction="320" Softness="1" ShadowDepth="10" Opacity="0.5" />
    </Button.BitmapEffect>
</Button>

编辑:

正如Dosu先生评论的那样,BitMapEffect已弃用,因此您可能应该使用 Effect相反。

这是一个使用 Effect 的示例:
<Trigger Property="IsMouseOver" Value="True">
    <Setter TargetName="border" Property="BorderBrush" Value="DarkGray" />
    <Setter Property="Foreground" Value="Black" />
    <Setter Property="Button.Effect">
        <Setter.Value>
            <DropShadowEffect Color="Black" Direction="320" ShadowDepth="3" BlurRadius="5" Opacity="0.5" />
        </Setter.Value>
    </Setter>
</Trigger>

关于wpf - 如何在像谷歌按钮这样的 wpf 按钮周围创建阴影效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12635307/

相关文章:

c# - 如何更改富文本框 wpf c# 中选定文本的背景颜色#

c# - 调整位图图像大小

java - 是否可以使android :drawableLeft fill the parent on a Button View?

android - 如何在 Android 中制作相互重叠的自定义形状按钮

javascript - 在删除按钮上 Bootstrap 多个数据切换?

java - 更改 HTML 对话框的样式 (CSS)

android - Gradle 建筑找不到 attr 风格

wpf - 路径的圆角

wpf - 将焦点设置在 xaml wpf 中的文本框上

java - 将样式应用于android中字符串的选定文本?