Я пытаюсь понять систему координат кварца 2d, в настоящее время я читаю справочник Apple и старую книгу «Кварц 2d графики для mac os x developer».Невозможно понять преобразование системы координат ядра iOS, нужна помощь
Я понимаю концепцию понятия «пространство-пространство» и «устройство-пространство», что пространство устройства может иметь разные координаты по умолчанию и координаты пространства-устройства не могут быть изменены, и мы отображаем пространство пользователя путем изменения его системы координат, присоединяющейся к устройству-пространству для достижения желаемого результата.
- Первая часть проблемы
Quartz 2d графики для Mac OS X разработчик книги говорит:
При преобразовании системы координат, вы должны иметь другая система координат , чтобы сравнить ее с. Преобразование обеспечивает относительное отображение от одной системы координат к другой. Когда вы рисуете в преобразованной системе координат, преобразование отображает график назад в первую систему координат. Внешний вид графика в фиксированной системе координат зависит от преобразования .
Я не получил эту точку жирным шрифтом.
И
Quartz 2D programming guide говорит:
Кварц осуществляет независимость устройства с отдельной координатой системы пользовательского пространства-отображение его в систему координат выходного устройства устройство пространственного использования тока матрицы преобразования или CTM. A матрица представляет собой математическую конструкцию, используемую для эффективного описания набора соответствующих уравнений . Текущая матрица преобразования представляет собой особый тип матрицы, называемой аффинным преобразованием, которая отображает точек из одного координатного пространства в другое, применяя перевод, вращения и операции масштабирования (вычисления, которые перемещают, вращают и изменяют размер системы координат) ,
Текущая матрица преобразования имеет второстепенную цель: она позволяет преобразовывать объекты в виде объектов . Например, чтобы нарисовать коробку , повернутую на 45 градусов, перед тем, как нарисовать окно, вы поворачиваете систему координат страницы (CTM). Кварц обращается к устройству вывода с использованием повернутой системы координат.
Путаница в том, что «Кварц привлекает к устройству вывода, используя вращающуюся систему координат.», Если я хочу, чтобы нарисовать один объект (изображение и т.д.) поворачивается и другой с ротацию что тогда произойдет? У нас есть целые координаты, вращающиеся, все, что будет нарисовано, вращается?
Я пытаюсь выполнить разные эксперименты, но не могу обернуть вокруг себя эту фигуру. Я создаю изображение, которое рисует две линии, реплицируя нижнюю левую систему координат в Photoshop, а затем добавляется в мой проект, чтобы видеть, как ведут себя координаты, вызывая CGContextRotateCTM(myContext, 45);
в метод drawrect, но он не делал ничего для изображения, которое я включил в xib-файл, используя построитель интерфейса, размещающий изображение внутри uiimage.
этого код из кварцевого 2D руководства по программированию
CGContextRef myContext = UIGraphicsGetCurrentContext();
CGRect contextRect = self.bounds;
CGContextTranslateCTM(myContext, 0, contextRect.size.height);
CGContextRotateCTM(myContext, 45); //my modification
CGContextScaleCTM(myContext, 1, -1);
float w, h;
w = contextRect.size.width;
h = contextRect.size.height;
CGAffineTransform myTextTransform;
CGContextSelectFont (myContext, "Helvetica-Bold", h/10, kCGEncodingMacRoman);
CGContextSetCharacterSpacing (myContext, 10);
CGContextSetTextDrawingMode (myContext, kCGTextFillStroke);
CGContextSetRGBFillColor (myContext, 0, 1, 0, .5);
CGContextSetRGBStrokeColor (myContext, 0, 0, 1, 1);
myTextTransform = CGAffineTransformMakeRotation(0);
CGContextSetTextMatrix (myContext, myTextTransform);
CGContextShowTextAtPoint (myContext, 0, 50, "Quartz 2D", 9);
, но этот код изменение текста, нарисованный на экране не изображение, которое я добавил?
- Вторая часть проблемы
Это также из кварца 2D руководство по программированию:
... применить преобразование, которое переводит начало координат в верхний левый угол контекста PDF и масштабирует y-координату на -1.
Использование масштабирующего преобразования для отрицания y-координаты изменяет некоторые условные обозначения в чертеже кварца. Например, если вы вызываете CGContextDrawImage для рисования изображения в контексте, изображение равно , измененное преобразованием при его втягивании в пункт назначения. ...
Я уже делаю это -1 вещь, но не влияет на изображение, и эта вещь -1 до сих пор не ясна для меня.
Я прочитал этот документ несколько раз, попробовал поиск в google, но нет полезного учебника, а также нет последних книг, доступных только в книгах, написанных в 2004, 2005, 2006 годах. Может ли кто-нибудь помочь в этом или может передать мне полезные ресурсы для изучите это подробно.
В отчаянном ожидании ответов действительно нужна помощь. Спасибо.
Это именно то, что я хочу, чтобы очистить мои концепции. Огромное спасибо. – Pamy