gpt4 book ai didi

ios - Core Graphics - 我的三角形/圆弧太尖了

转载 作者:可可西里 更新时间:2023-11-01 05:31:49 24 4
gpt4 key购买 nike

我在 Core Graphics 的自定义饼图中绘制“切片”,使用 UIBezierPath[path addArcWithCenter:radius:startAngle:endAngle:clockwise:]方法。我的问题是通常切片的尖端实际上过去 中心点,侵入其他切片空间。

有没有办法“圆化”这条边?


这是我用来绘制路径的代码

[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

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

最佳答案

它没有“超过”中心点。您的困惑在于您正在抚摸路径。描边路径时,描边位于路径的中心,因此一半描边在路径外,一半描边在路径内。如果你想要一个准确的笔画,你有两个选择:

  1. 用您的描边颜色填充您的路径,然后构建另一个路径,该路径按所需的线宽插入您的第一个路径,然后用您的填充颜色填充该路径。这将模拟“内部”描边,但如果您的描边或填充颜色是半透明的,则它不可用。

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

或者,您可以尝试将 lineJoinStyle 设置为 kCGLineJoinMiter 以外的值。使用默认的斜接样式,线条实际上会从拐角处拉出所需的距离以便相交,这意味着它们可以超过线宽的 1/2。如果您使用 kCGLineJoinRoundkCGLineJoineBevel 它们不能超过线宽的 1/2。这可能不太准确,但可能足以满足您的需求。

关于ios - Core Graphics - 我的三角形/圆弧太尖了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8451494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com