Я пытаюсь понять кварцевую 2-мерную систему координат. В настоящее время я читаю справочное руководство Apple и старую книгу «Кварцевая 2-мерная графика для разработчика mac os x».
Я понимаю концепцию пространства пользователя и пространства устройства, согласно которой пространство устройства может иметь разные системы координат по умолчанию, а координаты пространства устройства не могут быть изменены, и мы сопоставляем пространство пользователя, изменяя его систему координат в соответствии с устройство-пространство для достижения желаемого результата.
В книге разработчиков Quartz 2d graphics для mac os x говорится:
При преобразовании системы координат у вас должна быть другая система координат для сравнения. Преобразование обеспечивает относительное отображение одной системы координат в другую.Когда ты нарисовать в преобразованной системе координат, преобразование отображает графический обратно в первую систему координат . Появление этого графика в фиксированной системе координат зависит от трансформация.
я не выделил это жирным шрифтом.
И
Руководство по программированию Quartz 2D говорит:
Quartz обеспечивает независимость устройства с помощью отдельной координаты. system - пользовательское пространство - отображение в системе координат вывода устройство - пространство устройства - с использованием текущей матрицы преобразования или CTM. А Матрица - это математическая конструкция, используемая для эффективного описания множества связанных уравнений. Текущая матрица преобразования - это особый тип матрицы, называемый аффинным преобразованием, который отображает указывает из одного координатного пространства в другое, применяя перевод, операции вращения и масштабирования (вычисления, которые перемещают, вращают и изменить размер системы координат).
Текущая матрица преобразования имеет второстепенное назначение: она позволяет вы можете изменить способ рисования объектов. Например, чтобы нарисовать коробку повернутый на 45 градусов, вы поворачиваете систему координат страницы (CTM), прежде чем рисовать коробку. Кварц обращается к устройству вывода. с использованием повернутой системы координат.
Заблуждение состоит в том, что «Кварц обращается к устройству вывода с помощью повернутой системы координат.", если я хочу нарисовать один объект (изображение и т. д.) повернутым, а другой - без вращения, то что произойдет? У нас повернуты целые координаты, все будет нарисовано повернуто?
Я пробую разные эксперименты, но не могу обернуть голову вокруг этого я создаю изображение, на котором рисую две линии, повторяющие нижнюю левую систему координат в фотошопе, а затем добавляю в свой проект, чтобы наглядно увидеть, как ведут себя координаты, вызывая 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);
, но этот код изменяет текст, отображаемый на экране, а не изображение, которое я добавил?
Это также из руководства по программированию Quartz 2D:
... применить преобразование, которое переводит начало координат в верхний левый угол угол контекста PDF и масштабирует координату y на -1.
Использование масштабирующего преобразования для отрицания координаты Y изменяет некоторые условные обозначения в чертеже кварца. Например, если вы позвоните CGContextDrawImage для рисования изображения в контексте, изображение изменяется преобразованием, когда оно втягивается в место назначения. ...
Я уже делаю это -1, но не влияю на изображение, а этот -1 для меня все еще непонятен.
Я читал этот документ несколько раз, пробовал искать в Google, но нет полезного руководства, а также нет последних книг, только книги, написанные в 2004, 2005, 2006 годах. Может ли кто-нибудь помочь в этом или порекомендовать мне полезные ресурсы для изучения это подробно.
Отчаянно жду ответов, очень нужна помощь. Спасибо.