今天总结了一下 用WPF画不规则窗体的列子,在分享例子之前,先解释几个WPF中常用的标签含义:
1.<LinearGradientBrush>:表示线性渐变绘制区域,线性渐变沿着直线定义界面,该直线的起点和终点有startPoint和endPiont定义,默认是沿着对角线方向进行,所得的渐变颜色是沿着对角线路径方向插入的,并且LinearGradientBrush画笔沿着直线绘制GradietStops。
2.<PathGeometry>:表示可以由弧、曲线、椭圆、直线和矩形组成的复杂图形。
每个PathGeometry都可以PathFigure对象的集合,每个PathFigure都可以由一个或是多个PathSegment对象组成,例如:ArcSegment(两点之间的椭圆弧)和LineSegment(两点之间的直线),它们实际上定义了PathFigure对象的形状。
下面画一个如附件中的图形:
实例代码是:
<Window x:Class="WpfTest.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" AllowsTransparency="True" Background="Transparent" WindowStyle="None" MouseLeftButtonDown="Window_MouseLeftButtonDown">
<Canvas Height="200" Width="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,140"></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 Name="lb1" Height="40" Width="74" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize=" 15" Content="Drag Me" Canvas.Left="58" Canvas.Top="43"></Label>
<Button Canvas.Left="150" Canvas.Top="30" Click="Button_Click">
<Button.Template>
<ControlTemplate >
<Canvas>
<Rectangle Height=" 15" Width=" 15" Stroke="Black" RadiusX="3" RadiusY="3">
<Rectangle.Fill>
<SolidColorBrush Color="Red">
</SolidColorBrush>
</Rectangle.Fill>
</Rectangle>
<Line Stroke="White" StrokeThickness="2" X1="3" Y1="3" X2="12" Y2="12"></Line>
<Line Stroke="White" StrokeThickness="2" X1="3" Y1="12" X2="12" Y2="3"></Line>
</Canvas>
</ControlTemplate>
</Button.Template>
</Button>
</Canvas>
</Window>