Как создать эффект отбрасывания тени вокруг кнопки wpf, такой как кнопка google
Я пытаюсь создать кнопку google в wpf. Я нашел следующую ссылку, которая указывает стиль кнопки css google
Стиль кнопки Google css
Прямо сейчас я также искал сеть и узнал этот стиль, похожий на кнопку 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 css, могу ли я узнать, как я могу достичь что?
Ответы
Ответ 1
Вы можете создать эффект тени и т.д., изменив значение 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>
EDIT:
Как отметил г-н Досу, BitMapEffect устарел, поэтому вы, вероятно, должны использовать Эффект вместо этого.
Здесь образец с использованием 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>