Переопределение drawRect: и добавление нового смещения CGContexts в стек - PullRequest
2 голосов
/ 21 декабря 2009

Я переопределил drawRect: в моем UIView, и я хочу нарисовать несколько плиток. Я перебираю их все, и у меня есть отдельная функция, которая рисует каждую отдельную плитку.

То, как я сейчас это делаю, я передаю вычисленную плитку CGRect функции. В настоящее время любые методы рисования должны включать смещения x & y прямоугольника, переданного ему при рисовании мозаичных изображений.

Как я могу вставить новое смещение CGContext в стек перед вызовом методов рисования плитки?

Так, например, я мог бы нарисовать квадрат в [0, 0, 50, 50] внутри метода рисования тайлов, и он на самом деле будет нарисован в правильном местоположении тайла?

1 Ответ

9 голосов
/ 21 декабря 2009

Вам следует воспользоваться CTM (матрицей текущих преобразований), которая использует аффинные преобразования для масштабирования чертежа в контексте. Он построен именно для этой цели.

  • Первый вызов CGContextSaveGState. Это сохраняет кучу информации о графическом контексте в стек (для контекста), включая CTM.
  • Во-вторых, используйте CGContextTranslateCTM. Передайте координаты x & y начала координат.
  • Затем вызовите подпрограмму рисования.
  • Наконец, вызовите CGContextRestoreGState. Это отменит перевод.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...