WPF 画不规则窗体

 

 

今天总结了一下 用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>

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值