在 WPF 中,阴影(Shadow)和模糊(Blur)效果可以通过 DropShadowEffect
和 BlurEffect
来实现。它们通常用于提高界面的视觉美感,突出控件或创建玻璃、毛玻璃风格的 UI 效果。
✅ 一、阴影效果:DropShadowEffect
<Button Content="带阴影的按钮"
Width="200" Height="50" FontSize="16">
<Button.Effect>
<DropShadowEffect Color="Black"
Direction="320"
ShadowDepth="5"
BlurRadius="10"
Opacity="0.5"/>
</Button.Effect>
</Button>
参数说明:
Color
:阴影颜色Direction
:阴影方向(角度,0 表示右侧,90 表示下方)ShadowDepth
:阴影距离BlurRadius
:阴影模糊度Opacity
:透明度(0~1)
✅ 二、模糊效果:BlurEffect
<Image Source="your-image.jpg" Width="300" Height="200">
<Image.Effect>
<BlurEffect Radius="8"/>
</Image.Effect>
</Image>
参数说明:
Radius
:模糊程度(值越大越模糊)
✅ 三、叠加使用阴影 + 模糊(如毛玻璃面板)
<Border Width="300" Height="200" CornerRadius="15" Background="#AAFFFFFF">
<Border.Effect>
<DropShadowEffect Color="#444"
Direction="270"
ShadowDepth="10"
BlurRadius="15"
Opacity="0.6"/>
</Border.Effect>
<Border.Effect>
<BlurEffect Radius="5"/>
</Border.Effect>
<!-- 内容 -->
<TextBlock Text="毛玻璃风格"
VerticalAlignment="Center"
HorizontalAlignment="Center"
FontSize="20"
Foreground="Black"/>
</Border>
⚠️ 注意:不能同时设置两个 Effect
,需要使用更复杂的组合结构,比如嵌套 Border
或使用 ShaderEffect
自定义效果。
✅ 四、模仿毛玻璃效果(需要 Win10+ 支持)
如果你想要真正的 毛玻璃(Acrylic Blur) 效果,可以借助 WPF UI 框架 或使用 Windows API:
<Window x:Class="GlassWindow"
AllowsTransparency="True"
Background="Transparent"
WindowStyle="None">
<Grid>
<!-- 添加模糊背景 -->
<Border Background="#CCFFFFFF" CornerRadius="10">
<Border.Effect>
<BlurEffect Radius="10"/>
</Border.Effect>
<TextBlock Text="毛玻璃窗体"
FontSize="24"
Foreground="Black"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
</Grid>
</Window>
🔧 补充:后台动态设置阴影或模糊
myButton.Effect = new DropShadowEffect
{
Color = Colors.Gray,
Direction = 320,
ShadowDepth = 5,
BlurRadius = 10,
Opacity = 0.5
};
如果你想打造类似 Win11 Fluent Design 风格(含阴影、透明、圆角、毛玻璃),可以继续深入使用 WinUI in WPF 或使用第三方 UI 框架(如 MahApps、ModernWPF、WPFUI)。
好的!以下是一个完整的 WPF 示例项目(XAML),展示如何在 Button
、Image
和 Border
控件上应用阴影(DropShadowEffect)和模糊(BlurEffect),并模拟毛玻璃(Acrylic-like)界面风格。
✅ 示例 XAML 页面:带阴影与模糊的界面
<Window x:Class="WpfEffectsDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF 阴影与模糊示例" Height="400" Width="600"
WindowStartupLocation="CenterScreen"
Background="#FFEFEFEF">
<Grid Margin="20">
<!-- 阴影按钮 -->
<Button Content="阴影按钮"
Width="200" Height="50" FontSize="16"
HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,0,0,0">
<Button.Effect>
<DropShadowEffect Color="Black"
Direction="320"
ShadowDepth="6"
BlurRadius="10"
Opacity="0.4"/>
</Button.Effect>
</Button>
<!-- 模糊图片 -->
<Image Source="https://via.placeholder.com/300x180"
Width="300" Height="180"
HorizontalAlignment="Right" VerticalAlignment="Top">
<Image.Effect>
<BlurEffect Radius="6"/>
</Image.Effect>
</Image>
<!-- 模拟毛玻璃的 Border -->
<Border Width="400" Height="150"
CornerRadius="12"
Background="#99FFFFFF"
HorizontalAlignment="Center" VerticalAlignment="Bottom">
<Border.Effect>
<DropShadowEffect Color="Gray"
Direction="270"
ShadowDepth="8"
BlurRadius="15"
Opacity="0.5"/>
</Border.Effect>
<!-- 模糊内容叠加 -->
<Grid>
<Grid.Effect>
<BlurEffect Radius="4"/>
</Grid.Effect>
<TextBlock Text="毛玻璃风格面板"
FontSize="20"
Foreground="Black"
VerticalAlignment="Center"
HorizontalAlignment="Center"/>
</Grid>
</Border>
</Grid>
</Window>
📌 效果总结
控件 | 效果 |
---|---|
Button | 黑色阴影,浮起感 |
Image | 模糊图片背景 |
Border | 模拟玻璃面板 + 阴影 + 模糊 |
🧩 注意事项
- 如果你用的是
.NET 6+
,默认 WPF 支持这些效果; - 如果想做成 Win11 风格玻璃窗体,还可以借助:
WindowChrome
AllowTransparency="True"
- 自定义 Win32 API(启用
DWM
毛玻璃效果)
📦 需要我为你打包完整示例项目(.zip)或扩展为 Win11 风格的 Fluent UI 吗?也可以加上动画、点击阴影变化、磨砂导航栏等。只需告诉我:
✅ “我要完整项目 + 毛玻璃窗体” 或
✅ “我要阴影+动画效果版”
好的!以下是你请求的 WPF 完整项目结构,包含阴影、模糊、模拟毛玻璃等效果,适合用于登录界面、弹窗、控制面板等 UI 场景。
📁 项目结构预览(WPF .NET 6 或 .NET Framework 均适用)
WpfEffectsDemo/
├── App.xaml
├── App.xaml.cs
├── MainWindow.xaml
├── MainWindow.xaml.cs
└── Resources/
└── sample.jpg (可选背景图)
✅ MainWindow.xaml 示例代码
<Window x:Class="WpfEffectsDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="毛玻璃 + 阴影效果"
Height="450" Width="800"
WindowStartupLocation="CenterScreen"
Background="#FFF0F0F0"
WindowStyle="None"
AllowsTransparency="True">
<Grid>
<!-- 半透明背景 -->
<Image Source="Resources/sample.jpg" Stretch="Fill" Opacity="0.3"/>
<!-- 毛玻璃面板 -->
<Border Background="#AAFFFFFF" CornerRadius="15"
HorizontalAlignment="Center" VerticalAlignment="Center"
Width="400" Height="220">
<Border.Effect>
<DropShadowEffect BlurRadius="20" ShadowDepth="5"
Color="Black" Opacity="0.4"/>
</Border.Effect>
<Grid>
<Grid.Effect>
<BlurEffect Radius="8"/>
</Grid.Effect>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="WPF 毛玻璃登录框"
FontSize="22" FontWeight="Bold"
HorizontalAlignment="Center" Margin="0,0,0,10"/>
<TextBox Width="280" Height="30" Margin="10"
PlaceholderText="用户名"/>
<PasswordBox Width="280" Height="30" Margin="10"/>
<Button Content="登录" Width="120" Height="32"
HorizontalAlignment="Center" Margin="10"/>
</StackPanel>
</Grid>
</Border>
</Grid>
</Window>
✅ App.xaml
<Application x:Class="WpfEffectsDemo.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
✅ 背景图片(可选)
放置任意图片到 Resources/sample.jpg
,也可用在线图片 URL 替代。
📦 打包下载项目代码(如何操作?)
目前我无法直接上传 ZIP 文件给你,但你可以:
▶ 方式一:复制粘贴
- 打开 Visual Studio
- 创建 WPF 项目(.NET 6 或 .NET Framework)
- 替换
MainWindow.xaml
和App.xaml
内容 - 添加一张背景图片命名为
sample.jpg
放在Resources
文件夹中 - 运行,即可看到效果
🧠 想升级体验?
如果你想要:
- Win11 风格的无边框窗口 + 拖动
- Fluent UI 图标 + 动画交互
- 毛玻璃过渡 + 模拟 Acrylic
告诉我 “升级为 Fluent 风格毛玻璃窗体”,我将提供更精致的版本!
发表回复