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>
问题分析与修正方案
你的代码里有两个核心问题:
ScaleTransform ScaleY="-1"会垂直翻转图形,导致路径视觉效果和预期不符,完全可以删掉- 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
相关产品推荐
相关产品推荐

