WPF-非矩形窗口的创建
第一、窗口的AllowsTransparency设置为True
第二、窗口的Background设置为Transparent
第三、窗口的WindowStyle设置为None
第四、窗口内的Grid用Clip或者Border设置为需要的形状
代码示例(利用Clip实现圆角窗口)
1 <Window x:Class="Test" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:CaiPiaoUI" 7 mc:Ignorable="d" 8 Title="Test" Height="500" Width="500" WindowStyle="None" AllowsTransparency="True" 9 Background="Transparent" WindowStartupLocation="CenterScreen"> 10 <Grid Background="Blue"> 11 <Grid.Clip> 12 <RectangleGeometry RadiusX="50" RadiusY="50" Rect="0,0,500,500"></RectangleGeometry> 13 </Grid.Clip> 14 </Grid> 15 </Window>
代码示例(利用Border实现圆角窗口)
1 <Window x:Class="Test" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:CaiPiaoUI" 7 mc:Ignorable="d" 8 Title="Test" Height="500" Width="500" WindowStyle="None" AllowsTransparency="True" 9 Background="Transparent" WindowStartupLocation="CenterScreen"> 10 <Grid> 11 <Border BorderThickness="20" CornerRadius="50" Background="Blue"></Border> 12 </Grid> 13 </Window>
这里特别注意一点,就是窗口背景色设置的位置:
Clip实现方式中,窗口背景色设置在Grid上;
Border实现方式中,窗口背景色设置在Border上。