Ios 核心图形-我的三角形/圆弧太尖

Ios 核心图形-我的三角形/圆弧太尖,ios,core-graphics,pie-chart,Ios,Core Graphics,Pie Chart,我使用UIBezierPath和[path addarchwithcenter:radius:startAngle:endAngle:顺时针://方法在核心图形的自定义饼图中绘制“切片”。我的问题是,通常切片的尖端实际上伸出中心点,侵入其他切片空间 有没有办法“绕过”这个边缘 这是我用来画路径的代码 [path moveToPoint:center]; [path addArcWithCenter:center radius:radius startAngle:interiorAngle en

我使用
UIBezierPath
[path addarchwithcenter:radius:startAngle:endAngle:顺时针://方法在核心图形的自定义饼图中绘制“切片”。我的问题是,通常切片的尖端实际上伸出中心点,侵入其他切片空间

有没有办法“绕过”这个边缘


这是我用来画路径的代码

[path moveToPoint:center];
[path addArcWithCenter:center radius:radius startAngle:interiorAngle endAngle:totalAngle clockwise:YES];
[path addLineToPoint:center];
[path closePath];

以下是问题的图像:


左下角蓝色部分的白色尖头略微侵入右上角的蓝色部分。

我看不出该图像中的问题(显示的是哪个片段?),但我可以建议您删除
addLineToPoint:
消息。这是没有必要的<代码>闭合路径将返回到中心,因为这是您开始的位置。

它不是“超过”中心点。你的困惑在于,你正在走这条路。在绘制路径时,笔划位于路径的中心,因此一半笔划位于路径外部,一半笔划位于路径内部。如果需要精确的笔划,有两个选项:

  • 用笔划颜色填充路径,然后构造另一条路径,该路径按所需的线宽插入到第一条路径中,然后用填充颜色填充该路径。这将模拟“内部”笔划,但如果笔划或填充颜色是半透明的,则该笔划不可用

  • 剪辑到路径,将笔划宽度增加一倍,然后笔划路径。剪裁将强制笔划仅在路径内绘制。但是,这在拐角处看起来可能不太“精确”(不太确定),因为它是笔划宽度的两倍,而不是计算“所需”路径


  • 或者,您可以尝试将
    lineJoinStyle
    设置为
    kglinejoinmiter
    以外的其他值。使用默认斜接样式,线实际上会从拐角处尽可能地向外绘制,以便相交,这意味着它们可以超过线宽的1/2。如果使用
    kCGLineJoinRound
    kcGlineJoinEvel
    它们不能超过线宽的1/2。这可能不太准确,但它可能足以满足您的需要。

    我怀疑问题在于白线的线宽。例如,一条8点宽的直线在路径两侧各有4个点。

    他的问题是锐角有一个非常尖的尖端,远远超出了他想要的路径,如果你往里看蓝色的大楔子,你可以看到对面蓝色的小楔子的尖端侵入。我认为用斜接填充和斜切或圆形笔划是可行的,也许在中心有一个直径等于线宽的圆,以确保其被覆盖。另一种可能的解决方案是,只需先做所有笔划(如果保证所有笔划的颜色都相同,甚至可以在一个笔划中完成),然后再做所有填充。@PeterHosey:“使用斜接填充”的想法没有道理。填充没有连接样式。他们永远不会超越这条路。这里的连接样式只适用于笔划。@Dfowj:很高兴听到这个。这当然是最简单的解决方案,但也有一些情况下,人们希望中风不会超出他们的路径,因为他们需要精确,这就是我的其他两个建议被使用的地方。