2015-11-18 7 views
2

Я немного смущен различиями в системе координат между UIKit и Core Graphics. В документации Apple отмечается, что UIKit использует ULO (верхнее левое начало), в то время как Core Graphics использует LLO (нижнее левое начало).core graphics system system origin confustion

Однако, как было отмечено в a post about coordinate systems, следует отметить, что UIKit

услужливо щелкает систему координат перед вызовом -drawRect:

Когда я рисую прямоугольник в точке (0,0), он действительно находится в верхнем левом углу, так что все кажется перевернутым. Однако, когда я рисую изображение с помощью CGContextDrawImage(), он все равно переворачивается. Я понимаю, что я могу просто использовать drawAtPoint(), чтобы избежать перевернутого изображения, но мне просто интересно узнать о системе координат: если он перевернут UIKit, почему изображение все еще перевернуто, если оно втянуто в перевернутый контекст? Кроме того, есть ли способ получить неустановленную систему координат? То есть, есть ли способ создать CGContext без прохождения UIKit?

Спасибо!

ответ

1

Поскольку у меня нет ответов, я представлю свое лучшее предположение: UIKit «помогает» переводит контекст из LLO в ULO, но, в отличие от пути, изображение имеет собственную систему координат внутри (для изображения) , В Core Graphics эта система координат интерпретируется как LLO, поэтому она перевернута.

Что касается создания CGContext без UIKit - кажется, что он был использован в течение дня, но был удален.

Любые комментарии/исправления оценены.

+1

Вы в основном правы на первой части. Для второй части «CGBitmapContextCreate» доступен с iOS 2.0 и до сих пор работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^