定义异形窗体

使用异形窗体,可以将窗体的背景设置为透明,边框设置为空,然后利用控件做出异形的窗体,例如:

XAML:

<Window x:Class="WpfWindow.CustomerWindow"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="NonRectangularWindowSample" SizeToContent="WidthAndHeight" 

MouseLeftButtonDown="NonRectangularWindow_MouseLeftButtonDown"

WindowStyle="None"

AllowsTransparency="True"

Background="Transparent">

<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">Drag Me</Label>

<Button Canvas.Left="155" Canvas.Top="30" Click="closeButtonRectangle_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>

代码文件:

using System.Windows;

using System.Windows.Input; 

namespace WpfWindow

{

public partial class CustomerWindow : Window

{

public CustomerWindow()

{

InitializeComponent();

}

void NonRectangularWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)

{

this.DragMove();

}

void closeButtonRectangle_Click(object sender, RoutedEventArgs e)

{

this.Close();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值