Все приведённые выше процедуры для рисования
выполняют только контурные рисунки (не закрашивая прямоугольник, окружность или
эллипс внутри). По умолчанию рисование происходит с использованием тонкой
сплошной линии, однако толщину и вид линии можно менять с помощью процедуры SetLineStyle(style,pattern,width:
word). Рассмотрим назначение параметров этой процедуры.
1. style
– вид линии. Здесь удобно задавать не конкретные числа, а
константы: SolidLn, DottedLn, CenterLn,
DashedLn, UserBitLn. Первая обозначает сплошную линию, следующие
три – разные виды прерывистых линий, последняя – линию, вид которой
определяется пользователем (см. ниже).
2. pattern
– образец для вида линии, определяемого пользователем. Этот
параметр вступает в действие лишь тогда, когда в предыдущем указано UserBitLn. Образец – это фрагмент линии, заданный в виде числа. Переход от конкретного
фрагмента к числу выполняется, например, так:
Удобнее
всего переводить полученное число в шестнадцатеричный вид, в нашем примере
получится $999C. При изображении линии закодированный нами
фрагмент будет повторяться столько раз, сколько нужно.
3. width
– толщина линии. Можно использовать числа, однако определены 2
константы: NormWidth и ThickWidth
(нормальная и толстая линии).
Перейдём теперь к рисованию закрашенных фигур.
По умолчанию внутренняя область фигуры будет закрашиваться белым цветом, причём
закраска будет сплошной. Для управления цветом и видом закраски используется
процедура SetFillStyle(style,
color: word); Также как и для стиля линии, для style предусмотрены
константы: EmptyFill, SolidFill, LineFill, LtSlashFill, SlashFill, BkSlashFill,
LtBkSlashFill, HatchFill, XHatchFill, InterleaveFill, WideDotFill,
CloseDotFill, UserFill. Первая обозначает отсутствие закраски, вторая –
сплошную, последующие – различные специфические виды закраски, самая последняя –
закраску, задаваемую пользователем. Чтобы задать пользовательский образец
закраски, нужно использовать процедуру SetFillPattern(Pattern: FillPatternType;
Color: Word); FillPatternType определяется как array[1..8] of byte, каждый элемент
массива кодирует одну строчку образца закраски (как и для линий), а всего таких
строчек 8. В результате закраска выполняется с помощью одинаковых квадратиков 8x8.
Ниже приводятся
процедуры рисования закрашенных фигур.
Название
Назначение
Bar(x1,y1,x2,y2: integer);
Рисует закрашенный прямоугольник.
FillEllipse(x,y: integer; xr,yr: word);
Закрашенный эллипс.
FillPoly(n: word; P);
Закрашенный многоугольник.
PieSlice(x,y: integer; a1,a2,r: word);
Закрашенный круговой сектор.
Sector (x,y: integer; a1,a2,xr,yr: word);
Закрашивает эллиптический сектор.
FloodFill(x,y: integer; Cborder: word);
Выливает краску в точку (x,y), откуда она растекается
во все стороны, пока не достигнет границы цвета Cborder.
Если такой границы нет или она незамкнута, то краска может залить весь экран.
3. Вывод текстовой информации.
Для вывода текста на экран используются две
процедуры:
1. OutText(s: string). Эта процедура выводит строку s начиная с текущей
позиции, то есть левый верхний угол выводимой строки находится в текущей
позиции (по умолчанию это так). Текущая позиция задаётся, например, с помощью MoveTo.
2. OutTextXY(x,y:
integer; s: string). Используется для вывода строки в
конкретной позиции.
Если требуется вывести какие либо числа, то
предварительно требуется преобразовать их в строку, например, с помощью
процедуры Str.
Пример:
var r: integer;
s: string;
...............
Str(r,s);
OutTextXY(100,200,’Результат=’+s);
Турбо Паскаль позволяет использовать несколько
различных шрифтов для вывода текста. Кроме
того, можно менять направление вывода текста, а также размер символов. В этих целях
используется процедура SetTextStyle(Font, Direction, CharSize : word). Перечислим возможные константы и значения для параметров этой
процедуры.