这段代码符合我的期望。它绘制一条弧,然后从该弧的顶部添加一条宽50点的线:
path.move(to: .init(x: myX, y: myY))
path.addArc(withCenter: CGPoint(x: centerX, y: centerY), radius: radius1, startAngle: .pi, endAngle: (3 * .pi)/2, clockwise: true)
let currentPoint = path.currentPoint
path.addLine(to: CGPoint(x: currentPoint.x + 50, y: currentPoint.y))
这段代码忽略了addLine
添加50点宽的线,而只是在第二条弧的第一个弧的顶部开始。
path.move(to: .init(x: myX, y: myY))
path.addArc(withCenter: CGPoint(x: centerX, y: centerY), radius: radius1, startAngle: .pi, endAngle: (3 * .pi)/2, clockwise: true)
let currentPoint = path.currentPoint
path.addLine(to: CGPoint(x: currentPoint.x + 50, y: currentPoint.y))
path.addArc(withCenter: CGPoint(x: centerX + 50, y: centerY), radius: radius1, startAngle: (3 * .pi)/2, endAngle: .pi, clockwise: false)
使用第二部分代码,如果我注释掉代码,我将得到完全相同的输出addLine
。如果将addLine代码更改为增加300个像素点而不是50个像素,则得到的输出完全相同。addLine代码被忽略,得到两个弧,在第一个端点和第二个端点之间没有直线。
有什么建议?非常感谢!
你说:
使用第二部分代码,如果我注释掉addLine代码,我将获得完全相同的输出。
是的,将弧线添加到现有路径时,它将自动从绘制一条线currentPoint
到第二条弧线的起点。如果您不希望它在它们之间添加线,那么如果您不想在它们之间添加线,则需要move(to:)
在路径中进行第二弧的起点。或创建两条路径,每条弧线一条,然后分别对其进行描边。
如果将
addLine
代码更改为增加300像素而不是50像素,则会得到完全相同的输出。
这不太有意义,我无法重现这种行为。例如,这是我将第二条弧线移动50pt时得到的结果(我将对笔划进行动画处理,以便您看到发生了什么事情):
但这是我将线移动300pt时得到的(但将第二条弧线与第一条弧线保持50pt的距离):
显然,如果您不仅使线长300pt,而且还将第二条圆弧的中心也移动了300pt,那么它将与第一个示例一样(除了更远的地方)。
但是,如果我将替换addLine(to:)
为move(to:)
,那么您将不会在它们之间找到界线:
FWIW,在所有这些示例中,我不知道您用于myX
和的myY
用途,因此我在第一个弧的左侧使用了一个点。显然,如果你不想额外的线,移动myX
和myY
到第一圆弧的起点(或只是评论说出来完全)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句