|
| Пример #1. Например:
|
|
300 250 moveto
350 250 lineto 350 220 lineto
400 220 lineto 400 190 lineto
450 190 lineto 450 160 lineto
500 160 lineto 500 130 lineto
- и получилась лесенка из четырех
ступенек. У lineto, как вы догадываетесь,
есть "брат", работающий с приращениями, и его, конечно, зовут
rlineto. Смотрите, как просто пишется то же
самое с его помощью:
300 250 moveto
50 0 rlineto 0 -30 rlineto
50 0 rlineto 0 -30 rlineto
50 0 rlineto 0 -30 rlineto
50 0 rlineto 0 -30 rlineto
|
Вот бы нам цикл устроить! Написать просто, сколько
раз повторить такое действие. Действительно, такой цикл есть. Он
выполняется командой repeat, перед которой пишется
число повторов и, в фигурных скобках, повторяемое действие. Вот так:
300 250 moveto
4 { 50 0 rlineto 0 -30 rlineto } repeat
Теперь можно накопленный путь нарисовать. Для этого
есть действие stroke.
| Упражнение #1. |
| a) |
Нарисуйте прямоугольник, ширина, высота и
координаты левой нижней точки которого лежат в стеке.
|
| b) |
То же для прямоугольника, когда в стеке лежат
координаты его левой верхней точки. |
| c) |
То же, когда в стеке лежат координаты центра.
|
| d) |
Нарисуйте квадрат, длина стороны которого и
координаты центра лежат в стеке. |
| e) |
Определите процедуру, рисующую квадрат со
стороной, длина которой лежит в стеке, а левый нижний угол
находится в текущей точке. С помощью этой процедуры нарисуйте
линию из мелких квадратиков. Для перехода от одного квадратика
к другому используйте слово rmoveto.
|
При исполнении stroke путь и
текущая точка теряются, и нужно все начинать заново. Не будем
расстраиваться, выход найдется. Пока поговорим о том, как много у
нас есть вариантов рисования нашей линии.
Прежде всего, можно установить ширину линии. Ширина
также измеряется в пунктах, но при этом, если вы измените масштаб,
то ширина изменится. Для установки используется команда
setlinewidth,
например,
0.5 setlinewidth
Можно изменить "пунктирность" линии (по умолчанию
линия, конечно, сплошная), способ стыковки прямоугольных участков,
способ оформления свободного конца, - мы всего здесь описать не
сможем.
Очень важна возможность менять цвет изображения.
Цвет можно выбирать как градацию серого (это очень удобно, если у
вас "черно-белый" принтер, потому что он сможет изобразить серый
цвет любой яркости, смешивая черные и белые точки в нужной
пропорции). Установка этой градации выполняется действием
a setgray
где a задает этот уровень, 0 - для сплошного черного, 1 - для
сплошного белого, чем ближе к 1, тем светлее.
Другая возможность - выбор полноценного цвета. В
ПостСкрипте используются две системы описания цветов, нам проще
сейчас использовать систему RGB, в которой цвет
получается смешением красного (Red), зеленого (Green) и синего
компонентов (Blue). Доля каждого компонента лежит между 0 и 1. Для установки требуемого цвета
нужно положить в стек три числа в диапазоне от 0 до
1 и выполнить команду setrgbcolor.
Наиболее удобные цвета можно заранее описать как
команды. Например,
/RED{ 1 0 0 setrgbcolor}def % красный
/WHITE{ 1 1 1 setrgbcolor}def % белый
/YELLOW{ 1 1 0 setrgbcolor}def % желтый
/BROWN{0.5 0.5 0 setrgbcolor}def % коричневый
Можно с помощью ПостСкрипта поэкспериментировать с
разными цветами. Отметим, что постскриптовские краски
"непрозрачные", что было под краской, уже не видно.
Мало того, что мы можем нарисовать построенный
путь. В случае, если этот путь замкнут, можно закрасить его
внутренность (залить ее) установленным в настоящее время цветом.
Заливку выполняет команда fill. Как и stroke, эта команда уничтожает использованный ею путь
и установку текущей точки. Как странно, что же делать, если мы хотим
нарисовать, например, желтую фигуру с зеленой рамкой? Должен же быть
какой-то выход. Выход найдется, но сначала немного поупражняйтесь.
| Упражнение #2. |
| a) |
Нарисуйте бледно-серый прямоугольник, а потом
красную рамку вокруг него. Размеры и расположение выберите
сами. |
| b) |
Нарисуйте радугу из горизонтальных полосок.
|
| c) |
Нарисуйте 5 цветных полосок с постепенным
переходом от красного к синему цвету. |
| d) |
Нарисуйте домик, постепенно добавляя детали
рисунка, например, кирпичную трубу на крыше, дверь, окно.
|
Назад
|