识别使用UIBezierPath绘制的不同形状?

时间:2012-04-27 09:01:49

标签: iphone objective-c ios xcode ios4

我可以使用UIBezierPath对象绘制形状。现在我想识别使用此绘制的不同形状,例如。矩形,正方形,三角形,圆形等。接下来我要做的是用户应该能够选择一个特定的形状,并且应该能够将整个形状移动到屏幕上的不同位置。实际要求甚至更复杂,但如果我能做到这一点,那么我可以解决剩下的问题了。

欢迎任何有关如何开始的建议或链接或要点。我正在考虑编写一个单独的视图来处理每个形状但不知道我该怎么做..

提前谢谢大家!!

1 个答案:

答案 0 :(得分:0)

我推荐David Gelphman的使用Quartz编程

在他的“绘画与路径”一章中,他有一个关于“路径建构基元”的章节,它提供了一个十字路口:

如果您使用CGContextAddLineToPoint,您的用户可以使用已知的笛卡尔点定义直线。您可以使用基本数学推导出这些点定义的几何形状。

如果您使用CGContextAddCurveToPoint,您的用户可以制作由已知点定义的弯曲行,并且我非常确定这些行会通过点运行,所以你仍然可以使用基本的数学来确定至少形成的形状类型的近似值。

但是如果使用CGContextAddQuadCurveToPoint,则点会定义绘制曲线的外部框架。你需要更高级的数学来确定曲线沿切线形成的形状。

Gelphman还讨论了“路径实用函数”,比如获取边界框并检查给定点是否在路径内。

至于移动已完成的路径,我认为你会使用CGContextTranslateCTM