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

时间:2011-12-09 20:45:13

标签: ios core-graphics pie-chart

我使用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];

以下是问题的图片:

The bottom left blue sector 'bleeds' into the larger blue sector near the middle

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

3 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我无法在该图片中看到问题(哪个切片正在显示?),但我建议您删除addLineToPoint:消息。没有必要; closePath将返回中心,因为那是你开始的地方。