如何使用Quartz连接两条不同颜色的线条?

时间:2010-08-26 06:43:15

标签: iphone quartz-2d

因此,根据Apple的Quartz 2D Programming指南,当路径中的连接线段在拐角处相交时(斜接连接,圆连接,斜角连接),有许多预定义的线连接样式。我希望用不同颜色的线条做到这一点,我遇到了麻烦。

根据此处的讨论:iPhone CGContext: drawing two lines with two different colors,为了在路径的某个点更改线条颜色,您必须将该路径分成两部分。看起来你必须使用color1描边路径,切换颜色,然后使用color2开始一个新路径。但是,因为我将路径分成两部分,这意味着连接样式将不再适用,因为它似乎只适用于作为同一路径的一部分连接的线段。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

使用Quartz无法连接两个不同颜色的路径,因为段只有在它们是同一路径的一部分时才能连接,而描边颜色只能应用于整个路径,而不是个别细分。来自Apple的Quartz 2D documentation

  

路径定义一个或多个形状或子路径。 [...]   路径创建和路径绘制是单独的任务。首先你创建一个   路径。当你想渲染一个路径时,你要求Quartz绘制它。

我可以想到两个解决方法:

  • 对于不错的结果,最好的选择是对两个路径使用kCGLineCapRound行上限和kCGLineJoinRound行连接,并确保触摸端点位于同一位置。

  • 如果您需要非圆形连接,并且笔触颜色不透明,则可以尝试绘制两条重叠路径,以便背景路径包含线连接并被部分遮盖前景路径。这可能适用于kCGLineCapSquarekCGLineCapButt大写和kCGLineJoinMiter联接,但您需要小心锐角和斜接限制。

如果您想全力以赴,可以将每条路径视为大纲并开发自己的连接设计。在这种情况下,您可能会发现CGPathCreateCopyByStrokingPath很有用 - 它会创建一个新路径'以便填充新路径绘制与描绘原始路径相同的像素'。