Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль.doc
Скачиваний:
58
Добавлен:
07.06.2015
Размер:
1.21 Mб
Скачать

23.3.2. Вывод точек на экран

В графическом режиме имеется возможность задавать цвет изображения и фона (из палитры). Для этой цели используются следующие процедуры.

1) Установка цвета фона

SetBkColor(Цвет:Word); { Цвет из палитры }

2) Цвет рисунка устанавливается процедурой

SetColor (Цвет:Word);

Цвет – номер цвета из палитры (от 0 до 15). Палитра устанавливается при инициировании графического режима. Ее можно изменять с помощью процедуры SetAllPalette. Можно заменить один цвет в палитре на другой с помощью процедуры SetPalette.

3) Очистка экрана перед выводом изображения осуществляется с помощью процедуры ClearDevice.

Вызов пары процедур: SetBkColor(Цвет);

ClearDevice;

окрасит весь экран заданным цветом.

4) Количество цветов в палитре позволяет определить функция GetMaxColor.

5) Вывод на экран отдельных точек обеспечивает процедура

PutPixel(x,y,цвет:Word).

Здесь (x,y) – координаты точки, а цвет – ее цвет (из палитры).

В графическом режиме используется своя система координат. Координаты задаются не в символах, а в точках экрана (пикселях, Pixel).

6) Для перемещения курсора (чаще называемого текущим указателем – CP, Current Pointer) по экрану используется процедура:

MoveTo(X,Y : integer);

Курсор помещается в точку с координатами (X,Y). Эта процедура аналогична процедуре GotoXY для текстового режима, но в графическом режиме курсор на экране невидим. Максимальные значения координат экрана X и Y (см. рис. 2.21) можно определить с помощью не имеющих аргументов функций:

GetMaxX и GetMaxY,

Пример.Xmax := GetMaxX;

Рассмотрим пример программы с использованием описанных выше процедур.

Задача. Составить программу "Звездное небо", которая выводит на экран разноцветные точки в случайных местах. В программе для задания координат и цвета будем использовать генератор случайных чисел Random. Диапазон случайных чисел определяется функциями GetMaxX, GetMaxY и GetMaxColor соответственно. Программа будет иметь вид, приводимый ниже.

Program Plot_Stars;

Uses

Crt, Graph;

Var

Er, GDr, Gmode : Integer;

X, Y : Integer;

Color :Integer;

Begin

{ Параметры графического режима }

Gdr := Vga;

Gmode := VgaLo;

InitGraph(Gdr,GMode,’’);

Er := GraphResult;

If Er = GrOk then

Begin

Randomize; {Инициализация генератора случайных чисел}

SetBkColor(Black);

ClearDevice;

Repeat

Color := Random(GetMaxColor)+1;

X := Random(GetMaxX);

Y := Random(GetMaxY);

PutPixel(x,y, Color);

Delay(10);

Until Keypressed;

CloseGraph;

End

Else

begin

Writeln(’Ошибка графики: ’,Er,’. ’,GraphErrorMsg(Er));

Writeln(’ Нажмите любую клавишу...’);

Repeat Until KeyPressed;

end

End.

23.3.3. Вывод текста (надписей) в графическом режиме

В графическом режиме предоставляется значительно больше (по сравнению с текстовым режимом) возможностей для вывода текста. Можно выбрать шрифт, его размер, ориентацию символов, способ выравнивания текста и т.п. К сожалению, кириллица допустима не во всех стандартно поставляемых шрифтах.

Для вывода текста в графическом режиме используются следующие процедуры.

1) SetTextStyle(Шрифт, Направление:Word; Размер:1..10);

- задает шрифт и размер букв.

Шрифт задается либо предопределенной константой, либо ее значением:

Имя константы

Значение

Характеристика

DefaultFont

0

растровый, матрица 8*8

TriplexFont

1

векторный, с засечками

SmallFont

2

векторный, мелкий

SansSerifFont

3

векторный, без засечек

GothicFont

4

векторный, готический

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

HorizDir = 0 – вывод текста слева направо (горизонтальная надпись),

VertDir = 1 – вывод текста снизу вверх (вертикальная надпись).

Размер определяет коэффициент увеличения символа. Для шрифта DefaultFont размер, равный 1, определяет исходную матрицу для представления символов (8х8 точек). Размер 2 приведет к выводу на экран образа символа, созданного на матрице 8х8, в область размером 16х16 точек и т.д. При больших размерах символы шрифта DefaultFont сильно искажаются, а качество векторных шрифтов остается приемлемым.

Пример. SetTextStyle (1,0,1); Установлен шрифт TriplexFont с размером символов 8х8 точек и горизонтальным направлением вывода.

2) OutТext(строка); – процедура; осуществляет вывод строки от текущего положения курсора выбранным процедурой SetTextStyle шрифтом.

3) OutTextXY(X,Y,строка); – процедура; осуществляет вывод строки от точки с координатами (X,Y) шрифтом, заданным процедурой SetTextStyle.

Пример. SetTextStyle (1,0,1);

OutTextXY(GetmaxX Div 2, GetmaxY div 2, ’Graphic’);

В результате выполнения этих процедур будет выведено слово Graphic в середине экрана.

Для вывода чисел в графическом режиме (например, максимального значения координаты х – Xmax) необходимо преобразовать их в строку с помощью процедуры

Str(Число, Строка);

в которой входной параметр Число является выражением целого или вещественного типа, а выходной параметр Строка – его строковым представлением. Например, следующий фрагмент программы обеспечивает вывод на экран, начиная от точки с координатами (80,50), значения Xmax.

Xmax := GetmaxX;

Str(Xmax,StrX);

OutTextXY(80,50,’Xmax=’+StrX);

Текущие параметры, влияющие на вид выводимого текста: шрифт, его размер, направление и выравнивание, можно узнать с помощью процедуры GetTextSettings.