我想绘制一个圆形字母。要做到这一点,我需要顺时针抚摸圆圈,逆时针抚摸字母。
这一切都很好,但是当我使用Core Text获得字母路径时,我无法弄清楚如何基本上颠倒路径。不是镜子或旋转或任何东西......这很简单。我希望点击顺序为逆时针。
实际上它非常困难。我有太多的视觉'一个接一个'的错误。答案 0 :(得分:2)
我能想到的只是在路径上调用CGPathApply并保存有关所有点的信息,然后以相反的方向重绘路径。完成后请务必致电CGPathCloseSubpath
。
答案 1 :(得分:2)
我知道这个问题和泥土一样古老,但是,我最近需要扭转一个CGPath。绝对没有关于如何做到这一点的例子,我需要这个在Mac和iOS上工作,所以使用-bezierPathByReversingPath
是不可能的。
所以这是反转CGPath的代码。这适用于开放路径以及关闭。它处理复杂的路径以及简单的路径。它还处理具有Cubic贝塞尔元素,二次贝塞尔元素以及线条的路径。我无法发布代码,因为它实际上是几个简单的类,所以我不得不拉链。
附加的Zip文件中有两个C ++类。一个是CCGPathReverse
类,另一个是类CCGPathIterator
类,与GDI + GraphicsPathIterator
非常相似(由CCGPathReverse
类使用。)
要使用它,只需添加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并不是一件容易的事!
答案 2 :(得分:1)
iOS 6推出-bezierPathByReversingPath
它起初有一些问题,但似乎是这个问题的答案。