Swift:创建路径时在两个addArc调用之间忽略了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))

这段代码忽略了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用途,因此我在第一个弧的左侧使用了一个点。显然,如果你不想额外的线,移动myXmyY到第一圆弧的起点(或只是评论说出来完全)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

这两个函数调用之间的区别

来自分类Dev

在Google Cloud Compute Engine中的两个网络之间创建路由

来自分类Dev

在Google Cloud Compute Engine中的两个网络之间创建路由

来自分类Dev

ExecJS:在两个调用之间保持上下文

来自分类Dev

这两个C函数调用之间有什么区别?

来自分类Dev

Fortran错误:两个不相关的子例程调用之间的类型不匹配

来自分类Dev

ExecJS:在两个调用之间保持上下文

来自分类Dev

这两个计划方法调用之间的区别-iOS

来自分类Dev

这两个MSBuild调用之间有什么区别

来自分类Dev

在两个特定的android应用之间共享文件

来自分类Dev

Android:设置两个应用之间的依赖关系

来自分类Dev

忽略两个div之间的边界

来自分类Dev

GoogleMock:期望两个方法调用之一

来自分类Dev

这两个jQuery ajax调用之间的主要功能区别是什么?

来自分类Dev

忽略两个C ++宏之间的代码(防止创建静态unittest对象)

来自分类Dev

Python:读取文件时如何忽略两个特定单词之间的文本?

来自分类Dev

在/ etc / environment中创建路径时〜/ folder和/ home / username / folder之间的区别

来自分类Dev

有人可以解释这两个http调用之间的区别,为什么一个失败但另一个失败吗?

来自分类Dev

两个函数之间的递归调用

来自分类Dev

如何在MATLAB中的矩阵中两个已知点之间创建随机路径

来自分类Dev

两个路径之间最长的匹配子路径

来自分类Dev

两个不相交集之间的路径(路径算法)

来自分类Dev

如何在Swift iOS中使用PolyLine在两个坐标之间绘制路径

来自分类Dev

确定两个节点之间的路径时没有负周期

来自分类Dev

如何在两个Tomcat之间使用https时创建两个Tomcat满意的自签名证书?

来自分类Dev

创建别名时为什么要提供两个不同的路径?

来自分类Dev

AutoMapper:使用“忽略”在两个集合之间进行映射

来自分类Dev

找出日期是否在两个日期之间,忽略年份

来自分类Dev

AutoMapper:使用“忽略”在两个集合之间进行映射

Related 相关文章

  1. 1

    这两个函数调用之间的区别

  2. 2

    在Google Cloud Compute Engine中的两个网络之间创建路由

  3. 3

    在Google Cloud Compute Engine中的两个网络之间创建路由

  4. 4

    ExecJS:在两个调用之间保持上下文

  5. 5

    这两个C函数调用之间有什么区别?

  6. 6

    Fortran错误:两个不相关的子例程调用之间的类型不匹配

  7. 7

    ExecJS:在两个调用之间保持上下文

  8. 8

    这两个计划方法调用之间的区别-iOS

  9. 9

    这两个MSBuild调用之间有什么区别

  10. 10

    在两个特定的android应用之间共享文件

  11. 11

    Android:设置两个应用之间的依赖关系

  12. 12

    忽略两个div之间的边界

  13. 13

    GoogleMock:期望两个方法调用之一

  14. 14

    这两个jQuery ajax调用之间的主要功能区别是什么?

  15. 15

    忽略两个C ++宏之间的代码(防止创建静态unittest对象)

  16. 16

    Python:读取文件时如何忽略两个特定单词之间的文本?

  17. 17

    在/ etc / environment中创建路径时〜/ folder和/ home / username / folder之间的区别

  18. 18

    有人可以解释这两个http调用之间的区别,为什么一个失败但另一个失败吗?

  19. 19

    两个函数之间的递归调用

  20. 20

    如何在MATLAB中的矩阵中两个已知点之间创建随机路径

  21. 21

    两个路径之间最长的匹配子路径

  22. 22

    两个不相交集之间的路径(路径算法)

  23. 23

    如何在Swift iOS中使用PolyLine在两个坐标之间绘制路径

  24. 24

    确定两个节点之间的路径时没有负周期

  25. 25

    如何在两个Tomcat之间使用https时创建两个Tomcat满意的自签名证书?

  26. 26

    创建别名时为什么要提供两个不同的路径?

  27. 27

    AutoMapper:使用“忽略”在两个集合之间进行映射

  28. 28

    找出日期是否在两个日期之间,忽略年份

  29. 29

    AutoMapper:使用“忽略”在两个集合之间进行映射

热门标签

归档