如何在swift中绘制一个复杂的圆圈?

时间:2016-05-08 10:08:01

标签: swift cocoa drawing

我已经了解了如何使用drawRect和NSBezierPath绘制简单的形状,但我需要绘制一个复杂的圆。所以,我有自己的字符串,字符串的某些范围有不同的颜色。我需要制作一个具有字符串长度的圆圈,并且字符串的不同范围应标记为箭头,请参见下面的示例。要使圆的所有部分与字符串成比例,我可以使用字符串和范围的长度。但是,我怎样才能画出圆圈的不同部分?通过为每个段使用多个子路径或?

更新 该图应表示更改的attributesstring,即用户可以更改区域的颜色,标记区域的长度,字符串的长度,可以添加新标记的区域或删除标记的区域,并通过单击按钮应获得的图形表示串。我正在考虑使用Ranges数组作为attributesstring,并且在for循环中,这些Ranges将逐一用于绘制带有和没有箭头的Arcs来填充整个环。我可以逐个使用绘制弧来获得具有不同颜色和厚度段的整个圆。现在的问题是如何将箭头添加到Arcs?有可能吗?

tfilter/3

1 个答案:

答案 0 :(得分:1)

首先,绘制整个圆圈,一个简单的路径。然后,为第一个箭头绘制一个更复杂的路径并用红色填充。然后绘制第二个箭头的路径并填充黑色。这应该非常简单,唯一的技巧是正确地进行数学运算(即三角法)以计算路径的控制点。如果您做了很多这样的事情,可以考虑购买PaintCode,这是一个从您的图纸中生成代码的Macintosh应用程序。

这是一个教程(恰好包含一些曲线箭头的代码):

https://www.raywenderlich.com/38918/paintcode-tutorial-bezier-paths