WPF中阴影边框

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>

效果图:

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亮猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值