iOS4: как установить абсолютную величину матрицы преобразования CGContext? - PullRequest
2 голосов
/ 13 августа 2010

В настоящее время я делаю графическое приложение, и моя жизнь станет намного проще, если я просто переверну матрицу преобразования контекста вверх ногами, когда захочу нарисовать что-то вверх ногами, что довольно часто. Тем не менее, единственная команда, которая может найти это, поддерживает CGContextScaleCTM. Это хорошо, я думаю, но это аддитивный (ну, мультипликативный) процесс. Если я масштабирую его до 50%, я должен знать, что я это сделал, и увеличивать его до 200% после этого, что означает получение текущей матрицы и выполнение математического упражнения каждый раз, когда я хочу сбросить ее до ее исходное состояние {1,0,0,1,0,0}, что тоже чертовски часто. Кажется, есть способы сделать это программно, но, кажется, крайне расточительно тратить процессорное время на получение, выборку и умножение матриц, когда все, что мне действительно нужно, это установить текущую матрицу преобразования в ее абсолютное значение.

Тем не менее, мне очень трудно узнать, КАК, и это действительно, очень глупо. Я предполагаю, что матрица преобразования хранится где-то в структуре CGContextRef как CGAffineTransform, но я нигде не могу найти хороший документ, чтобы сказать мне, как его имя, чтобы я мог установить его вручную, и я даже не знаю, если это будет работать. Кто-нибудь может помочь в этом вопросе?

-Ash

1 Ответ

2 голосов
/ 13 августа 2010

Я считаю, что единственный способ сделать то, что вы говорите, это то, о чем вы думаете, то есть использовать CGContextScaleCTM, однако я не вижу, как будет использоваться математика, чтобы проверить, есть ли она вдвое / вдвое и т. Д. часто, если вы звоните им только тогда, когда это абсолютно необходимо.

Обновление при наборе: пробовали ли вы использовать CGContextSaveGState и CGContextRestoreGState? Я не совсем уверен, если это то, что вы ищете, но это позволит вам переходить назад и вперед между вашими пополам / вдвое, я думаю, довольно легко?

...