自定义的可拖动窗体
在学习wpf过程中用过的Demo,背景透明,可以拖动,效果如下:
组成部分:path对象绘制边框,label下的字符串,自定义按钮控件
xaml代码:
<Window x:Class="CustomWindow.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525" Background="Transparent" AllowsTransparency="True" WindowStyle="None" MouseLeftButtonDown="Window_MouseLeftButtonDown"> <!--窗口的形状都绘制在Canvas面板里面--> <Canvas Width="200" Height="200" > <!--窗口的轮廓--> <Path Stroke="DarkGray" StrokeThickness="2"> <Path.Fill> <LinearGradientBrush StartPoint="0.2,0" EndPoint="0.8,1" > <GradientStop Color="White" Offset="0"></GradientStop> <GradientStop Color="White" Offset="0.45"></GradientStop> <GradientStop Color="LightBlue" Offset="0.9"></GradientStop> <GradientStop Color="Gray" Offset="1"></GradientStop> </LinearGradientBrush> </Path.Fill> <Path.Data> <PathGeometry> <PathFigure StartPoint="40,20" IsClosed="True"> <LineSegment Point="160,20"></LineSegment> <ArcSegment Point="180,40" Size="20,20" SweepDirection="Clockwise"></ArcSegment> <LineSegment Point="180,80"></LineSegment> <ArcSegment Point="160,100" Size="20,20" SweepDirection="Clockwise"></ArcSegment> <LineSegment Point="90,100"></LineSegment> <LineSegment Point="90,150"></LineSegment> <LineSegment Point="60,100"></LineSegment> <LineSegment Point="40,100"></LineSegment> <ArcSegment Point="20,80" Size="20,20" SweepDirection="Clockwise"></ArcSegment> <LineSegment Point="20,40"></LineSegment> <ArcSegment Point="40,20" Size="20,20" SweepDirection="Clockwise"></ArcSegment> </PathFigure> </PathGeometry> </Path.Data> </Path> <!--“拖动我!”的标签--> <Label Width="200" Height="120" FontSize="15" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">拖动我!</Label> <!--关闭按钮--> <Button Canvas.Left="155" Canvas.Top="30" Click="Button_Click"> <Button.Template> <ControlTemplate> <Canvas> <Rectangle Width="15" Height="15" Stroke="Black" RadiusX="3" RadiusY="3"> <Rectangle.Fill> <SolidColorBrush x:Name="myAnimatedBrush" Color="Red" /> </Rectangle.Fill> </Rectangle> <Line X1="3" Y1="3" X2="12" Y2="12" Stroke="White" StrokeThickness="2"></Line> <Line X1="12" Y1="3" X2="3" Y2="12" Stroke="White" StrokeThickness="2"></Line> </Canvas> </ControlTemplate> </Button.Template> </Button> </Canvas> </Window>
后台代码:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { this.DragMove(); } private void Button_Click(object sender, RoutedEventArgs e) { this.Close(); } }