Графические контексты технологии Quartz
В библиотеке Quartz 2D, как и в остальной части библиотеки Core Graphics, рисование происходит в графическом контексте (graplcs context), обычно называемом просто контекстом. С каждым представлением связан определенный контекст. Этот контекст извлекается и используется для вызова различных графических функций Quartz, беря на себя все заботы по визуализации рисуемой графики в представлении.
Обратите внимание на применение функций С из библиотеки Core Graphics вмепо объектов Objective-C для рисования. Обе технологии, Core Graphics и OpenGL, представляют собой прикладные программные интерфейсы (API), написанные на С, и позтому большая часть кода, представленного в этой части статьи, будет содержать вызовы функций С.
Определив контекст, вы можете приступить к рисованию в нем, передавая контекст различным графическим функциям оболочки Core Graphics.
Например, в приведенном ниже фрагменте кода сначала создается контур (path), состоящий из линий толщиной 4 пикселя, в заданном контексте, а затем рисуется эта линия.
В первом вызове указывается, что линии, из которых создается текущий контур, должны быть толщиной 4 пикселя. Затем указывает красный цвет обводки. С рисующими действиями в оболочке Core Graphics связаны два следующих цвета.
Цвет обводки, (stroke color) используемый для рисования линий по очертаниям форм.
Цвет заливки, используемый для заполнения форм.
С контекстом связано своего рода невидимое перо, которым рисуется линия. По ходу выполнения команд рисования движениями этого пера образуется контур (path). При вызове функции CGContextMoveToPoint () конечная точка текущего контура перемещается в заданное место, но при этом ничего не рисуется. Любая последующая операция будет выполнена относительно той точки, в которую перемещено перо. В приведенном выше примере кода перо было перемещено в точку с координатами (10, 10). При вызове следующей функции линия рисуется от текущего местоположения пера в точке с координатами (10, 10) до указанного местоположения в точке с координатами (20, 20), которая становится новым местом расположения пера.
Когда вы рисуете в оболочке Core Graphics, то на самом деле не видите нарисованное, а только создаете контур, который может стать формой, линией или каким-нибудь другим графическим объектом, но он не обладает цветом или иными свойствами, делающими его видимым. Это все равно, что писать симпатическими чернилами. Созданный контур остается невидимым до тех пор, пока вы не сделаете что-нибудь конкретное для того, чтобы он стал видимым. Поэтому далее необходимо указать Quartz нарисовать линию, используя функцию CGContextStrokePath(). В этой функции заданные ранее толщина линии и цвет обводки фактически используются для "раскраски" контура с целью сделать его видимым.
- Дата: 10-01-2015, 13:23