wpf-绘图-路径标记语法PathMarkupSyntax

步骤:移动至起点-》绘图-》闭合图形

直接对Path的Data属性赋值即可。这个语法不区分大小写。使用两个double数值表示一个点,即(x, y),用逗号/空格分隔都可以。建议逗号。

常用路径标记语法

M
移动到起始点,语法:M 起始点
M 10,10

L
绘制直线,语法:L 终点
L 150,30

H
绘制水平线,语法:H 终点横坐标(因为水平嘛,纵坐标确定了)
H 180

V
绘制垂线,语法:V 终点纵坐标
V 180

A
绘制圆弧,语法:A 母椭圆尺寸 旋转角度 是否大弧 顺/逆时针 终点 (这里解释了为啥坐标用逗号)
A 180,180 45 1 1 150,150

C
三次方贝塞尔曲线,语法:C 控制点1 控制点2 终点

S
平滑三次贝塞尔曲线,语法S 控制点2 终点
此时会把前一条贝塞尔曲线的第二控制点以起点为对称中心的对称点作为第一控制点。如果前面的线段不是贝塞尔曲线,则用起点作为第一控制点。 (我的测试结果好像不一样,之后用到再探索吧)

<!--Path Stroke="Black" Fill="Bisque" Data="M 0,0 C 30,0 70,100 100,100 S 170,0 200,0"/-->
<Path Stroke="Black" Fill="Bisque" Data="M 0,0 C 30,0 70,100 100,100 C 130,100 170,0 200,0"/>

这两句效果一样。

Q
二次方贝塞尔曲线,语法:Q 控制点1 终点

T
平滑二次贝塞尔曲线,语法:T 终点

        <!--Path Stroke="Black" Fill="Bisque" Data="M 0,200 Q 100,0 200,200 T 400,200"/-->
        <Path Stroke="Black" Fill="Bisque" Data="M 0,200 Q 100,0 200,200 Q 300,400 400,200"/>

这俩也是一样的。

Z
闭合图形
M 0,0 L 40,80 Z

使用Path裁剪界面元素

< Window>的WindowStyle=“None” AllowsTransparency=“True”
< Path Visibility=“Hidden” x:Name=“clipPath” Data=“Blend画的轨迹”/>(加Hidden是因为需要的是数据且当前不需要展示)
< Button Click=“button_Click”/>
那边函数里写的是this.Clip = this.clipPath.Data

复杂路径用Blend拖动绘制的,不是人工绘制

<UserControl x:Class="pxy.PathMarkupTest"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:pxy"
             mc:Ignorable="d" 
             d:DesignHeight="500" d:DesignWidth="500" Background="Aqua">
    <Grid>
        <Path Visibility="Hidden" x:Name="clipPath" Data="M35,0.5 C54.053825,0.49999958 69.5,14.379172 69.5,31.500001 69.5,32.035026 69.484917,32.566886 69.455109,33.095256 L69.37487,34.043357 71.055008,33.35458 C80.566261,29.584673 91.023338,27.499998 102,27.499996 115.03478,27.5 127.33688,30.439716 138.1925,35.650257 L138.86374,35.982139 138.67812,34.669571 C138.56034,33.627441 138.5,32.570053 138.5,31.500001 138.5,14.379172 153.94618,0.49999958 173,0.5 192.05383,0.49999958 207.5,14.379172 207.5,31.500001 207.5,48.620826 192.05383,62.5 173,62.5 171.80914,62.5 170.63237,62.445785 169.47258,62.33995 L169.29121,62.31924 169.99052,63.369041 C177.29414,74.633216 181.5,87.85633 181.5,102 181.5,143.14522 145.90664,176.5 102,176.5 58.093361,176.5 22.5,143.14522 22.5,102 22.5,87.85633 26.705856,74.633216 34.009483,63.369041 L34.594513,62.490787 33.224632,62.459663 C14.995872,61.629386 0.5,48.0858 0.5,31.500001 0.5,14.379172 15.946175,0.49999958 35,0.5 z" Fill="Bisque" HorizontalAlignment="Left" Height="177" Margin="168,189,0,0" RenderTransformOrigin="0.711586538461538,0.0580169469320568" Stretch="Fill" Stroke="Black" VerticalAlignment="Top" Width="208"/>
        <Button Content="click" Width="100" Height="100" Margin="38,305,362,95" Background="Chartreuse" Click="Button_Click"/>
    </Grid>
</UserControl>
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.Clip = this.clipPath.Data;
        }

在这里插入图片描述
不加window的两个属性设置:
在这里插入图片描述
加了之后不能拖动也不能放大缩小了,图形还是没有变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值