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

Dfo*_*owj 4 core-graphics ios pie-chart

我正在使用a UIBezierPath[path addArcWithCenter:radius:startAngle:endAngle:clockwise:]方法在Core Graphics的自定义饼图中绘制'切片' .我的问题是,切片的尖端实际上突然超过中心点,侵入其他切片空间.

有没有办法'围绕'这个边缘?


这是用于绘制路径的代码

[path moveToPoint:center];
[path addArcWithCenter:center radius:radius startAngle:interiorAngle endAngle:totalAngle clockwise:YES];
[path addLineToPoint:center];
[path closePath];
Run Code Online (Sandbox Code Playgroud)

这是问题的图像:

左下角的蓝色部分

左下方蓝色部分的白色尖端稍微侵入右上方的大蓝色部分.

Lil*_*ard 5

它不是"过去"的中心点.你的困惑在于你正在抚摸这条道路.描边路径时,笔划位于路径的中心位置,因此笔划的一半位于路径之外,笔划的一半位于路径内.如果您想要准确的笔画,您有两种选择:

  1. 用你的笔触颜色填充你的路径,然后用所需的线宽构建另一条插入第一条路径的路径,然后用填充颜色填充该路径.这将模拟"内部"笔划,但如果笔划或填充颜色是半透明的,则无法使用.

  2. 剪切到您的路径,将笔划宽度加倍,然后描绘您的路径.剪切将强制笔划仅在路径内绘制.然而,这在角落看起来可能看起来不太"准确"(不是很确定),因为它会使笔划宽度加倍而不是计算"所需"路径.

或者,您可以尝试将其设置lineJoinStyle为其他内容kCGLineJoinMiter.使用默认的斜接样式,线条实际上从角落处抽出以便满足,这意味着它们可以超过线宽的1/2.如果你使用kCGLineJoinRoundkCGLineJoineBevel他们不能超过线宽的1/2.这可能不太准确,但它可能足以满足您的需求.