我想画出一个带圆圈的圆。要做到这一点,我需要顺时针旋转圆圈,逆时针旋转字母。如何颠倒CGPath的点顺序
这一切都很好,但是当我得到使用核心文本的字母路径时,我无法弄清楚如何基本上颠倒路径。不是镜子或旋转或任何东西......这足够简单。我希望点笔画顺序为逆时针。
它实际上是非常困难的。由于一个错误,我的视觉效果太多了。
我想画出一个带圆圈的圆。要做到这一点,我需要顺时针旋转圆圈,逆时针旋转字母。如何颠倒CGPath的点顺序
这一切都很好,但是当我得到使用核心文本的字母路径时,我无法弄清楚如何基本上颠倒路径。不是镜子或旋转或任何东西......这足够简单。我希望点笔画顺序为逆时针。
它实际上是非常困难的。由于一个错误,我的视觉效果太多了。
iOS 6介绍-bezierPathByReversingPath
它有一些问题,但它似乎是这个问题的答案。
大概我能想到的就是在路径上调用CGPathApply并保存有关所有点的信息,然后在相反方向重新绘制路径。记住,当你完成后请致电CGPathCloseSubpath
。
感谢一些帮助,我可以得到所有的观点......我会继续努力。 – griotspeak
我知道这个问题和污垢一样古老,但是,我最近需要逆转一个CGPath。关于如何做到这一点绝对没有例子,我需要这个在Mac和iOS上工作,所以使用-bezierPathByReversingPath
是不可能的。
所以这里是反转CGPath的代码。这适用于打开的路径以及关闭。它处理复杂的路径以及简单的路径。它还处理具有立方贝塞尔元素,二次贝塞尔元素以及线的路径。我无法发布代码,因为它实际上是一些简单的类,所以我不得不对Zip进行编码。
附加的Zip文件中有两个C++类。一个是CCGPathReverse
类,另一个是一类CCGPathIterator
类,这是非常相似的GDI +的GraphicsPathIterator
(它是用来通过CCGPathReverse
类。)
Here is a link to the classes。
要使用它,只是包括CGPathReverse.h
头,并调用它像这样:
CGMutablePathRef myPath = CGPathCreateMutable();
CGPathAddRect(myPath, NULL, CGRectMake(0,0,200,200));
CCGPathReverse r(myPath);
CGPathRelease(myPath);
myPath = r.GetReversedPathMutableCopy();
//
// myPath is now a counter-clockwise rectangle, do what you want with it...
//
CGPathRelease(myPath);
我希望这可以帮助一个人在那里,因为扭转了CGPath是不平凡!
你要部署哪个版本的iOS? bezierPathByReversingPath在iOS 7及更高版本中可用。非常感谢分享 – griotspeak
@griotspeak - 我正在创造一些必须适用于iOS和Mac OSX的东西...... Mac OSX CoreGraphics仍然没有“CGPathCreateCopyByReversingPath()”API或类似的东西。你仍然必须手动完成。 – Andy
如果你想要iOS 5的支持,仍然不理想。 – darvids0n
的确如此,但我想在接下来的几个月里,对iOS 5的支持将开始快速下降。 – griotspeak