首页 > 其他分享 >WPF - 阴影效果

WPF - 阴影效果

时间:2023-09-04 09:26:13浏览次数:43  
标签:控件 效果 阴影 DropShadowEffect WPF 属性

基本属性:

属性 说明 描述
Color 设置阴影效果背景色 Color="Red"
ShadowDepth 设置阴影的偏移度 ShadowDepth="5"
Direction 设置阴影的角度 Direction="-45"
BlurRadius 设置阴影模糊程度 BlurRadius="20"
Opacity 设置阴影透明度 Opacity="1"
阴影效果介绍: 在WPF中,你可以使用DropShadowEffect属性为控件添加阴影效果。DropShadowEffect是System.Windows.Media.Effects命名空间下的一个类,它提供了一种简单的方法来为控件添加阴影效果。 下面是一个简单的示例,演示如何在WPF中为按钮添加阴影效果:
<Button Width="100" Height="50">
    <Button.Effect>
        <DropShadowEffect ShadowDepth="10" BlurRadius="20" Color="Gray"/>
    </Button.Effect>
    Click Me
</Button>
在上面的示例中,我们为按钮的Effect属性设置了一个DropShadowEffect对象。ShadowDepth属性控制阴影的深度,BlurRadius属性控制阴影的模糊程度,Color属性控制阴影的颜色。 你可以根据需要调整这些属性的值来获得不同的阴影效果。 阴影效果应用范围: DropShadowEffect控件适用于需要添加阴影效果的各种场合,例如在按钮、标签、文本框等控件上添加阴影,以增强控件的立体感和视觉效果。 此外,DropShadowEffect控件还可以用于实现阴影的动态效果,例如在鼠标悬停时改变阴影的颜色、大小等属性,以提供更丰富的交互体验。 总之,DropShadowEffect控件是一种非常实用的工具,可以在WPF应用程序中增强视觉效果和交互体验 阴影效果是UIElement类提供,所有继承自UIElement类的控件都可以实现阴影效果。

代码实例:  由于时间关系,代码实例都写在一起了。

<Grid>
    
    <StackPanel>
        <!--设置阴影效果-->
        <Border Width="100" Height="50" Background="Orange">
            <!--Effect设置影响效果标签-->
            <Border.Effect>
                <!--在目标周围绘画阴影效果-->
                <DropShadowEffect Color="Red" ShadowDepth="0"/>
            </Border.Effect>
        </Border>
        
        <!--设置阴影效果的基本属性-->
        <Border Margin="0 10" Width="100" Height="50" Background="Orange">
            <!--Effect设置影响效果标签-->
            <Border.Effect>
                <!--默认显示黑色阴影效果-->
                <!--<DropShadowEffect/>-->
                <!--Color设置阴影颜色  ShadowDepth设置阴影偏移度 Direction设置阴影的角度 BlurRadius="20"设置模糊的程度 Opacity="1"设置透明度-->
                <!--大多数时候使用不设置阴影的偏移方向-->
                <DropShadowEffect Color="Red" ShadowDepth="5" Direction="-45" BlurRadius="20" Opacity="1"/>
            </Border.Effect>
        </Border>
        
        
        <!--设置阴影效果偏移度-->
        <Border Margin="0 10" Width="100" Height="50" Background="Orange">
            <!--Effect设置影响效果标签-->
            <Border.Effect>
                <!--ShadowDepth设置阴影偏移度 -->
                <DropShadowEffect Color="Red" ShadowDepth="5"/>
            </Border.Effect>
        </Border>

        <!--实现旋转阴影效果-->
        <Border Width="100" Height="50" Background="Orange">
            <!--设置旋转效果-->
            <Border.RenderTransform>
                <!--Angle设置旋转角度-->
                <RotateTransform Angle="45"/>
            </Border.RenderTransform>
            <!--Effect设置影响效果标签-->
            <Border.Effect>
                <!--Color设置阴影颜色  ShadowDepth设置阴影偏移度 Direction设置阴影的角度-->
                <DropShadowEffect Color="Red" ShadowDepth="5" Direction="-45"/>
            </Border.Effect>
        </Border>

        <!--给文本设置阴影效果-->
        <TextBlock Text="Hello">
            <TextBlock.Effect>
                <!--Color设置阴影颜色  ShadowDepth设置阴影偏移度 Direction设置阴影的角度 BlurRadius="20"设置模糊的程度 Opacity="1"设置透明度-->
                <DropShadowEffect Color="Gray" ShadowDepth="0" BlurRadius="3"/>
            </TextBlock.Effect>
        </TextBlock>

        <!--实现阴影效果-->
        <Border Margin="0 60 0 0" Width="100" Height="30" BorderBrush="Green" BorderThickness="1" CornerRadius="10">
            <!--这里设置隐形效果是对整个border内所有的控件生效,只要是非透明不部分都给它做阴影效果-->
            <Border.Effect>
                <DropShadowEffect Color="Red" ShadowDepth="0" Direction="-45" BlurRadius="5" Opacity="1"/>
            </Border.Effect>
            <TextBlock Text="Hello" VerticalAlignment="Center" HorizontalAlignment="Center"/>
        </Border>

        <!--实现只有外部显示阴影效果,不影响内部控件-->
        <!--Background="White" 设置内容区域为白色背景 - 样式组合可以千变万化-发挥想象力-->
        <Border Margin="0 10 0 0" Width="100" Height="30" BorderBrush="Green" BorderThickness="1" CornerRadius="10"
                Background="White">
            <!--这里设置隐形效果是对整个border内所有的控件生效,只要是非透明不部分都给它做阴影效果-->
            <Border.Effect>
                <DropShadowEffect Color="Red" ShadowDepth="0" Direction="-45" BlurRadius="5" Opacity="1"/>
            </Border.Effect>
            <TextBlock Text="Hello" VerticalAlignment="Center" HorizontalAlignment="Center"/>
        </Border>

        <!--实现在内部显示阴影效果的情况下不影响内部的其它控件。-->
        <Grid Margin="0 10 0 0">
            <!--ClipToBounds="True" 超出区域部分的阴影效果进行裁切-->
            <Border  Width="100" Height="30" BorderBrush="Green" BorderThickness="1" CornerRadius="0"
    ClipToBounds="True">
                <!--这里设置隐形效果是对整个border内所有的控件生效,只要是非透明不部分都给它做阴影效果-->
                <Border.Effect>
                    <DropShadowEffect Color="Red" ShadowDepth="0" Direction="-45" BlurRadius="5" Opacity="1"/>
                </Border.Effect>
            </Border>
            <!--这里文字放在boder外面,这样文字部分可以不显示阴影效果。-->
            <TextBlock Text="Hello" VerticalAlignment="Center" HorizontalAlignment="Center"/>
        </Grid>

        <!--实现在设置圆角的情况下在内部显示阴影效果-->
        <Grid Margin="0 10 0 0">
            <!--ClipToBounds="True" 超出区域部分的阴影效果进行裁切-->
            <Border  Width="100" Height="30" BorderBrush="Green" BorderThickness="1" CornerRadius="10">
                <!--这里设置告诉boder按照指定尺寸进行裁切-->
                <Border.Clip>
                    <!--Rect="0 0 100 30" 图形坐标(x,y,w,h)(x轴坐标,y轴坐标,宽度,高度) RadiusX="10" X轴圆角度-->
                    <RectangleGeometry Rect="0 0 100 30" RadiusX="10" RadiusY="10"/>
                </Border.Clip>
                <!--这里设置隐形效果是对整个border内所有的控件生效,只要是非透明不部分都给它做阴影效果-->
                <Border.Effect>
                    <DropShadowEffect Color="Red" ShadowDepth="0" Direction="-45" BlurRadius="5" Opacity="1"/>
                </Border.Effect>
            </Border>
            <!--这里文字放在boder外面,这样文字部分可以不显示阴影效果。-->
            <TextBlock Text="Hello" VerticalAlignment="Center" HorizontalAlignment="Center"/>
        </Grid>
    </StackPanel>
</Grid>
  效果展示:

 

 

标签:控件,效果,阴影,DropShadowEffect,WPF,属性
From: https://www.cnblogs.com/wjygxjz/p/17676029.html

相关文章

  • WPF ComboBox SelectionChanged 重复执行的问题
    参考:WPFTabControlSelectionChanged重复执行的问题-一!雨-博客园(cnblogs.com)添加如下代码privatevoidComboBox_SelectionChanged(objectsender,SelectionChangedEventArgse){e.Handled=true;} 如果采用MVVM模式,在当前......
  • WPF 设置图片圆角的3种方式
    在WPF中,设置页面布局的时,遇到了设置图片圆角问题,试了以下几种方式,都能实现:第一种:这种图片是跟着border设置的圆角而改变的,自适应图片的大小<Borderx:Name="b_IsChecked" Width="48"Height="48"HorizontalAlignment="Right"VerticalAlignment="Top"CornerRadius="......
  • WPF在EnsureHandle之前设置WindowStyle提升性能
    本文将记录一个在WPF应用程序启动过程中的性能优化点。如果一个窗口需要设置WindowStyle属性,那么在窗口EnsureHandle之前,设置WindowStyle属性将会比在EnsureHandle之后设置快不少在dotTrace里的一次测量在窗口EnsureHandle之后设置WindowStyle属性的时间大概是2......
  • 实现tab切换效果
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>tab切换</title></......
  • WPF引入Metro后默认样式被更改,想使用原始样式的办法
    参考WPF引入HandyControl后默认样式被更改,想使用原始样式的办法_冰激凌克星的博客-CSDN博客<ButtonStyle="{x:Null}"Content="取消HandyControl样式"Margin="20"/>将Style设置成null......
  • 如何让文本模拟打字效果出现
    最近在做一个chatGpt聊天页面,需要把后端返回的文本以打字的效果输出。一开始想着是利用CSS的动画效果来实现。实现方式如下:<html><head><title>Typing</title></head><style>body{background:navajowhite;background-size:cover;font-family:'Treb......
  • WPF使用Blazor的快速案例
    下面我们将讲解在WPF中使用Blazor,并且使用Blazor做一些文件编辑操作,下面是需要用到的东西WPFBlazorMasaBlazorMonaco安装MasaBlazor模板使用CMD指令安装模板dotnetnewinstallMASA.Template新建MasaBlazorWPFApp找到如图的模板,然后点击下一步下一步,新建......
  • WPF 动态更改启动窗体startupUri
    第一步:在App.xaml里,把StartupUri=""去掉,改成Startup="Application_Startup"第二步:在App.xaml.cs里,增加Application_Startup事件:privatevoidApplication_Startup(objectsender,StartupEventArgse){ApplicationcurrApp=Application.Current;currAp......
  • WPF Textblock标签下 Run标签-----显示空白或者消除空白
    消除Run之前的空白是将Run标签布局时头尾相连,如下:<TextBlock><RunText="A"></Run><RunText="B"></Run></TextBlock> 消除Run之间连接的空白格式,方式如下:<TextBlock><RunText="A&quo......
  • 直播平台开发,利用原生JS实现回到顶部以及吸顶效果
    直播平台开发,利用原生JS实现回到顶部以及吸顶效果  <style>    .box1{      width:1200px;      height:800px;            margin:0auto;    }    .box2{      width:1200px; ......