х у drawDot -> - а типичный вызов этой процедуры имеет вид:

240 367 drawDot

Пример. Используя большее число параметров, нарисовать прямоугольник произвольного размера Можно расширить возможности процедуры box, если задавать масштаб и положение рисуемого ею прямоугольника. Тогда ее влияние на стек задается следующим образом:

size х у drawBox } - % draw box of size units on a side centered at (x.y) % рисуем прямоугольник со стороной side и с центром в точке (х.у)

а соответствующее определение имеет вид:

/drawBox { gsave % avoid any global effects on system

% избегаем любых глобальных влияний на систему

translate % set the center of the box

% задаем центр прямоугольника

2 div dup scale % adjust the size

% корректируем размер

box % draw the box

% рисуем прямоугольник

grestore % restore the previous system

% восстанавливаем предыдущее состояние системы

} def

Первым оператором, использующим значениях и у, является translate. Затем, поскольку процедура box рисует квадрат со стороной две единицы, мы делим параметр size на 2 и помещаем в стек size/2. После этого прямоугольник рисуется. Все эти операторы окаймляются парой команд gsave grestore, чтобы предотвратить изменение системы координат.

Пример. Написание текста «на следующей строке» При написании строк текста вы в конце концов достигаете правого поля страницы, и вам требуется перейти на «новую строку»; это означает, что вы перемещаетесь вниз на следующую строку и начинаете писать с левого поля. Предположим, что определены следующие переменные:

/1М 72 def % left margin 1 inch from left edge of page

% левое поле - 1 дюйм от левого края страницы

//RM 540 def % right margin 1 inch from right edge of page

% правое поле - 1 дюйм от правого края страницы

/lineHeight 12 def % vertical distance between adjacent lines of text

% расстояние no вертикали между двумя соседними строками текста Кроме того, переменная ypos содержит текущую позицию у, в которой на данной странице пишется текст. Тогда следующая процедура:

/doNewli ne
{/ypos ypos lineHeight sub def % decrease ypos and save it

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