star % draw star % рисуем звезду

gsave X save current transformation % сохраняем текущее преобразование 2 2 scale % magnify by 2 % увеличиваем в 2 раза star % draw star В % рисуем звезду Б

grestore % return to initial state % возвращаемся в исходное состояние 1 2 scale % differential scaling

1018

Приложение Г. Введение в PostScript31

% неравномерное масштабирование star % draw star С

ї рисуєм звезду В _

Еще один пример: пусть нам нужно нарисовать правильный узор из окружностей - такой, как показано на рис. Г. 15.

Рис. Г.15. Использование операторов gsave и grestore

Допустим, что команда circ рисует закрашенный круг в начале координат. Начнем с нижнего левого круга и нарисуем круги первого ряда, перемещая с помощью команды translate начало координат поперек страницы. Затем вернемся к самому левому кругу и «поднимем» его к началу следующего ряда. Такой «возврат» можно легко выполнить командой grestore, как показано в следующем фрагменте кода:

gsave % save current state until the end

% записываем текущее состояние до самого конца

30 25 translate circ % set origin for the first circle in
% bottom row: draw circle

% устанавливаем начало координат для первого круга

% в нижнем ряду: рисуем круг

gsave % remember where we are

% запоминаем, где мы находимся

30 0 translate circ
30 0 translate circ
grestore % back to lower left circle

% возвращаемся к нижнему левому кругу

0 25 translate circ % go up to second row and draw left circle % поднимаемся во второй ряд и рисуем левый круг gsave % push this graphics state, too: % remember where we are

% проталкиваем в стек это графическое состояние: % запоминаем, где мы находимся 30 0 translate circ 30 0 translate circ

grestore % back to left side of second row

% назад к левой стороне второго ряда

0 25 translate circ % up to third row. draw left circle

% наверх к третьему ряду, рисуем левый круг

30 0 translate circ
30 0 translate circ

grestore % restore state from the beginning % восстанавливаем начальное состояние Возможность «вернуться» к предыдущей системе координат упрощает структуру сценария и его отслеживание. Позднее мы приведем несколько других примеров.


⇐ Предыдущая| |Следующая ⇒