我想畫出一個帶圓圈的圓。要做到這一點,我需要順時針旋轉圓圈,逆時針旋轉字母。如何顛倒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