You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF中如何使用Path创建单侧带弧度的正方形形状?

如何用Path创建单侧带弧度的正方形

我想创建一个单侧带有弧度的正方形,但不知道怎么用Path实现。我尝试了下面的代码,是最接近目标效果的,但还不对:

<Path Stroke="Black" StrokeThickness="1" Fill="Red" Data="M50,0 L100,0 L100,100 L0,100 L0,30 A30,30 0 0 1 30,0 Z" Margin="-886.5,-3741.5,1414.5,5143.5" Stretch="Fill" RenderTransformOrigin="0.5,0.5" >
    <Path.RenderTransform>
        <TransformGroup>
            <ScaleTransform ScaleY="-1"/>
            <SkewTransform/>
            <RotateTransform/>
            <TranslateTransform/>
        </TransformGroup>
    </Path.RenderTransform>
</Path>

问题分析与修正方案

你的代码里有两个核心问题:

  1. ScaleTransform ScaleY="-1" 会垂直翻转图形,导致路径视觉效果和预期不符,完全可以删掉
  2. Path Data的起点和圆弧参数搭配错误,导致弧度位置不对

如果目标是左侧顶部带弧度的正方形,直接调整Path Data就能实现:

<Path Stroke="Black" StrokeThickness="1" Fill="Red" 
      Data="M30,0 
            L100,0 
            L100,100 
            L0,100 
            L0,30 
            A30,30 0 0 1 30,0 Z" />

路径数据逐行解释:

  • M30,0:移动到圆弧的右端点(也就是正方形左上角弧度的终点)
  • L100,0:画直线到正方形右上角
  • L100,100:画直线到正方形右下角
  • L0,100:画直线到正方形左下角
  • L0,30:画直线到左侧圆弧的下端点
  • A30,30 0 0 1 30,0:绘制圆弧,参数含义:
    • 前两个30:圆弧的X/Y半径(正圆所以数值相同)
    • 第一个0:圆弧的旋转角度(0表示不旋转)
    • 第二个0:绘制小弧(如果设为1就是大弧)
    • 1:顺时针绘制圆弧
    • 30,0:圆弧的终点,和开头的起点闭合
  • Z:闭合整个路径

如果要调整弧度大小,只需要把所有30改成你想要的数值就行(比如改成20就是更小的弧度)。另外建议去掉冗余的Margin和RenderTransform,用Width/Height或者Stretch属性来控制图形大小,更易维护。

内容的提问来源于stack exchange,提问作者WspBb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 17:27:31