2015-11-18 41 views
2

我對UIKit和Core Graphics之間的座標系差異有點困惑。 Apple文檔指出,UIKit使用ULO(左上角原點),而Core Graphics使用LLO(左下角原點)。核心圖形座標系原點困惑

然而,如在a post about coordinate systems所指出的,應該注意的是的UIKit

調用-drawRect之前有益翻轉座標系:

當我畫在(0,0)的矩形,它確實在左上角,所以事情似乎翻轉了。但是,當我使用CGContextDrawImage()繪製圖像時,它仍然翻轉。我知道我可以使用drawAtPoint()來避免上下顛倒的圖像,但我只是對座標系感到好奇:如果它被UIKit翻轉過來,爲什麼圖像被翻轉翻轉時仍然顛倒?另外,有沒有辦法獲得一個未翻轉的座標系?也就是說,有沒有辦法在不通過UIKit的情況下創建CGContext?

謝謝!

回答

1

因爲我沒有得到答案,所以我會提出我的最佳猜測:UIKit「有用地」將上下文從LLO翻轉到ULO,但與路徑不同,圖像在內部具有自己的座標系(對於圖像) 。在Core Graphics中,這個座標系被解釋爲LLO,因此它是倒置的。

至於創建一個沒有UIKit的CGContext - 看起來它曾經有可能在當天回來,但已被刪除。

讚賞任何意見/更正。

+1

你基本上是正確的第一部分。對於第二部分,'CGBitmapContextCreate'從iOS 2.0開始可用,並且今天仍然有效。 –