DropShadowEffect
是WPF中的一种效果(Effect),它可以为元素添加阴影效果。该效果具有以下属性:
- BlurRadius:模糊半径,用于指定阴影边缘的模糊程度。值越大,阴影边缘越模糊。
- ShadowDepth:阴影深度,用于指定阴影距离元素表面的距离。
- Direction:阴影方向,用于指定阴影相对于元素表面的方向。值为0表示从上方产生阴影,值为90表示从右侧产生阴影。
- Opacity:不透明度,用于指定阴影的不透明度。值为1表示完全不透明,值为0表示完全透明。
- Color:颜色,用于指定阴影的颜色。
示例1:为按钮添加阴影
<Button Content="Click me">
<Button.Effect>
<DropShadowEffect BlurRadius="5" ShadowDepth="2" Direction="270" Opacity="0.7" Color="Black"/>
</Button.Effect>
</Button>
在这个示例中,我们为按钮应用了 DropShadowEffect
。阴影的属性设置如下:BlurRadius
设置为 5,表示阴影边缘的模糊程度为 5;ShadowDepth
设置为 2,表示阴影距离按钮表面的距离为 2;Direction
设置为 270,表示阴影方向相对于按钮表面为下方;Opacity
设置为 0.7,表示阴影的不透明度为 70%;Color
设置为 Black,表示阴影的颜色为黑色。
示例2:为文本框添加阴影
<TextBox Text="Enter text">
<TextBox.Effect>
<DropShadowEffect BlurRadius="3" ShadowDepth="1" Direction="45" Opacity="0.5" Color="Gray"/>
</TextBox.Effect>
</TextBox>
在这个示例中,我们为文本框应用了 DropShadowEffect
。阴影的属性设置如下:BlurRadius
设置为 3,表示阴影边缘的模糊程度为 3;ShadowDepth
设置为 1,表示阴影距离文本框表面的距离为 1;Direction
设置为 45,表示阴影方向相对于文本框表面为右上角方向;Opacity
设置为 0.5,表示阴影的不透明度为 50%;Color
设置为 Gray,表示阴影的颜色为灰色。
示例3:为图像添加阴影
<Image Source="image.png">
<Image.Effect>
<DropShadowEffect BlurRadius="8" ShadowDepth="4" Direction="135" Opacity="0.8" Color="DarkBlue"/>
</Image.Effect>
</Image>
在这个示例中,我们为图像应用了 DropShadowEffect
。阴影的属性设置如下:BlurRadius
设置为 8,表示阴影边缘的模糊程度为 8;ShadowDepth
设置为 4,表示阴影距离图像表面的距离为 4;Direction
设置为 135,表示阴影方向相对于图像表面为左下角方向;Opacity
设置为 0.8,表示阴影的不透明度为 80%;Color
设置为 DarkBlue,表示阴影的颜色为深蓝色。
示例4:窗体周围加阴影效果
<Style x:Key="window_Shadow" TargetType="{x:Type Window}">
<!--对象中心点用来定义所有RenderTransform变换中相对位置的的参考点,默认为图形的左上即(0,0),
该属性值为相对值,介于 0 和 1 之间的值被解释为每对 x,y 轴中的当前元素的范围的因素-->
<!--<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>-->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Grid Margin="10">
<!--x:Static 引用中定义的任何静态的值的代码实体公共语言规范 (CLS)– 合规的方式。 引用的静态属性可以用于提供在 XAML 中属性的值
SystemColors 定义的所需的静态成员的类型的名称。
WindowBrushKey 使用WindowBrushKey创建对用于绘制窗口的客户端区域背景的画笔的动态引用。 如果更改画笔,将自动更新此动态引用。 若要创建的静态引用,不会自动更新,请使用WindowBrush。-->
<Rectangle Name="rt" Fill="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
<Rectangle.Effect>
<!--DropShadowEffect是WPF中一个阴影效果的类
BlurRadius模糊半径属性,获取或设置阴影边缘的定义(阴影有多模糊)
ShadowDepth属性设置投影距纹理下方的距离-->
<DropShadowEffect BlurRadius="12" ShadowDepth="0"/>
</Rectangle.Effect>
</Rectangle>
<!--SnapsToDevicePixels获取或设置一个值,该值确定在呈现过程中,此元素的呈现是否应使用特定于设备的像素设置。 这是依赖项属性。-->
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Margin}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
CornerRadius="5">
<ContentPresenter />
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Window x:Class="WPF001.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF001"
mc:Ignorable="d"
Title="Window1" Height="450" Width="800" WindowStyle="None" Background="Transparent" AllowsTransparency="True" Style="{StaticResource window_Shadow}">
<Grid>
</Grid>
</Window>
效果图: