- •Лабораторная работа № 7 разработка паскаль-программ с использованием графических процедур и функций
- •7.1 Цель работы
- •7.2 Задание на лабораторную работу
- •7.3 Возможности и методы модуля Graph
- •7.3.2 Константы
- •7.3.3 Процедуры и функции
- •7.4 Требования к программе
- •7.5 Порядок выполнения работы
- •7.6 Размещение графической информации на экране
- •7.7 Алгоритм построения графика функции
- •7.8 Рекомендации по выполнению лабораторной работы
- •7.8.3. Поиск экстремумов нелинейных функций.
- •7.9 Варианты заданий
- •7.10 Содержание отчета
7.3.2 Константы
Таблица 22-Константы типов и толщины линии
Константа |
Значение |
Тип |
SolidLn |
0 |
Сплошная |
DottedLn |
1 |
Точечная |
CenterLn |
2 |
Штрихпунктирная |
DashedLn |
3 |
Пунктирная |
UserBitLn |
4 |
Тип определяется пользователем |
NormWidth |
1 |
Нормальная толщина |
ThickWidth |
3 |
Тройная толщина |
Таблица 23-Константы управления шрифтом
Константа |
Значение |
Описание |
DefaultFont |
0 |
Матричный шрифт 8х8 |
TriplexFont |
1 |
Шрифт триплекс |
SmallFont |
2 |
Мелкий шрифт |
SansSerifFont |
3 |
Прямой шрифт |
GothicFont |
4 |
Готический шрифт |
- |
5 |
Рукописный шрифт |
- |
6 |
Одноштриховой шрифт типа Courier |
- |
7 |
Красивый наклонный шрифт типа Times Italic |
- |
8 |
Шрифт типа Times Roman |
- |
9 |
Шрифт типа Courier увеличенного размера |
- |
10 |
Крупный двухштриховый шрифт |
HorizDir |
0 |
Горизонтальное направление |
VertDir |
1 |
Вертикальное направление |
UserCharSize |
0 |
Размер символа, определяемый пользователем |
LeftText |
0 |
Указатель слева от текста |
CenterText |
1 |
Указатель по центру текста |
RightText |
2 |
Указатель справа от текста |
BottomText |
0 |
Указатель снизу от текста |
CenterText |
1 |
Указатель по центру текста |
TopText |
2 |
Указатель сверху от текста |
7.3.3 Процедуры и функции
Таблица 24-Процедуры
Метод |
Назначение |
Procedure Circle(X,Y:Intrger,R:Word) |
Рисует окружность радиуса R, используя X,Y как координаты центра |
Procedure ClearDevice |
Очищает экран |
Procedure ClearViewPort |
Очищает окно |
Procedure CloseGraph |
Закрывает графический режим |
Procedure GraphDefaults |
Устанавливает стандартные параметры графического режима |
Procedure InitGraph(var Driver, Mode: Integer; Path:String) |
Инициализирует графический режим. Переменные Driver и Mode должны содержать тип графического драйвера и его режим работы. Допускается указать Driver=0 для автоматического определения этих параметров по результатам тестирования аппаратуры. Параметр Path определяет маршрут поиска файла графического драйвера. |
Procedure Line(X1,Y1,X2,Y2:Integer) |
Рисует линию от точки X1,Y1 до точки X2,Y2. |
Procedure LineTo(X,Y:Integer) |
Рисует линию от текущего указателя к точке X,Y |
Procedure MoveTo(X,Y:Integer) |
Смещает текущий указатель к точке X,Y. |
Procedure OutText(TextString: String) |
Выводит текстовую строку на экран. |
Procedure OutTextXY(X,Y:Integer; TextString: String) |
Выводит текст в заданное место зкрана |
Procedure PutPixel(X,Y:Integer; Color:Word) |
Выводит точку цветом Color с координатами X,Y. |
Procedure Rectangle(X1,Y1,X2,Y2: Integer) |
Рисует прямоугольник, используя текущий цвет и тип линий. |
Procedure SetBkColor(Color:Word) |
Устанавливает цвет фона |
Procedure SetColor(Color:Word) |
Устанавливает основной цвет, которым будет осуществляться рисование. |
Procedure SetGraphMode(Mode: Integer) |
Устанавливает новый графический режим и очищает экран. |
Procedure SetLineStyle(LineStyle, Pattern, Thickness: Word) |
Устанавливает толщину и стиль линии. |
Procedure SetTextJustify(Horiz,Vert: Word) |
Устанавливает выравнивание текста, используемого в процедурах OutText и OutTextXY. |
Procedure SetTextStyle(Font,Direction, CharSize: Word) |
Устанавливает текущий шрифт, стиль и размер текста |
Procedure SetViewPort(X1,Y1,X2,Y2: Integer; ClipOn: Boolean) |
Устанавливает текущее окно для графического вывода. |
7.3.4 Пример использования графического режима экрана и некоторых возможностей процедур из модуля Graph представлен ниже:
Unit Zad1; {создание модуля}
Interface
Uses Crt, Graph;
Procedure z1;
Implementation
Procedure z1; {описание процедуры}
var d,ibm,i,x1,y1,x2,y2,n:integer;
s1,s2,s3,s4,s5:string;
begin
ClrScr;
d:=detect;
ibm:=ibm8514hi;
s1:=' Demonstration program';
s2:=' Interface Menu';
s3:=' By Gureev Alexey';
s4:='Borland Pascal';
s5:=' If you like it, then press any key ...';
InitGraph(d,ibm,'d:\pas\pas\bgi'); {подключение графического режима}
if graphresult<>grOK then WriteLn('error...') {проверка открытия графического режима на наличие ошибок}
else
begin
SetGraphMode(IBM); {установка режима}
ClearDevice; {очищение экрана}
SetColor(7); {установка основного цвета}
SetLineStyle(0,0,3); {установка стиля начертания линий}
Rectangle(0,0,640,480); {рисует прямоугольник}
SetLineStyle(1,0,1); {переустановка типа линий}
Rectangle(3,3,637,477);
SetTextStyle(7,0,3); {установка способа начертания, типа шрифта и его размера}
SetColor(27);
MoveTo(30,10); {перемещение курсора в определенную точку экрана}
OutText(s1); {вывод строки на экран}
MoveTo(50,70);
SetColor(54);
SetTextStyle(4,0,6);
Delay(400); {пауза в 400 миллисекунд}
OutText(s2);
MoveTo(340,350);
SetTextStyle(5,0,4);
SetColor(73);
For i:=1 to Length(s3) do begin{побуквенный вывод строки}
OutText(s3[i]);
delay(250);
end;
MoveTo(100,150);
SetColor(26);
SetTextStyle(8,1,4);
OutText(s4);
Delay(300);
SetTextStyle(2,0,5);
Repeat{вывод в виде бегущей строки}
MoveTo(250,450);
For i:=1 to Length(s5) do begin
SetColor(15);
OutText(s5[i]);
delay(15);
end;
Delay(400);
MoveTo(250,450);
For i:=1 to Length(s5) do begin
SetColor(12);
OutText(s5[i]);
delay(15);
end;
Delay(400);
Until KeyPressed;
end;
readkey;
SetColor(7);
x1:=0;y1:=0;
x2:=640;y2:=480;
n:=2;
Repeat{декоративная заливка экрана}
Rectangle(x1,y1,x2,y2);
x1:=x1+Round(n/2);y1:=y1+n;
x2:=x2-Round(n/2);y2:=y2-n;
until x1>240;
CloseGraph; {закрытие графического режима}
ReadKey;
end;
end.
Unit Zad2;
Interface
Uses Crt, Graph;
Procedure z2;
Implementation
var d,ibm,k,col,x1,y1,x2,y2,x3,y3,x4,y4,r,n,p1,p2,p3:integer;
Procedure z2;
begin
ClrScr;
Randomize; {подключение генератора случайных чисел}
d:=detect;
ibm:=ibm8514hi;
InitGraph(d,ibm,'d:\pas\pas\bgi'); {переход к графическому режиму}
if graphresult<>grOK then WriteLn('error...') {проверка на наличие ошибок}
else
begin
SetGraphMode(IBM); {установка режима}
ClearDevice; {очистка экрана}
k:=0;
Repeat
col:=Random(256);
SetLineStyle(0,0,3); {устанавливаем способ начертания линий}
x1:=Random(640);x2:=Random(640);x3:=Random(640);
y1:=Random(480);y2:=Random(480);y3:=Random(480);
x4:=Random(640);y4:=Random(480);
r:=Random(100);
SetColor(col);
Line(x1,y1,x2,y2); {вычерчивает прямую}
Line(x2,y2,x3,y3);
Line(x3,y3,x1,y1);
Delay(30); {пауза в 30 миллисекунд}
SetColor(col+1);
Rectangle(x1,y2,x4,y3); {выводит прямоугольник}
Delay(30);
SetColor(col-1);
Circle(x4,y4,r); {вычерчивает окружность}
Delay(30);
SetColor(0);
{затемнение выведенных объектов}
Line(x1,y1,x2,y2);
Line(x2,y2,x3,y3);
Line(x3,y3,x1,y1);
Rectangle(x1,y2,x4,y3);
Circle(x4,y4,r);
If k=10 then begin {вывод надписи с сопровождением звуковаго сигнала}
MoveTo(150,200);
SetColor(col+2);
SetTextStyle(3,0,4);
OutText('Information Systems');
Sound(50);
Delay(100);
NoSound;
k:=0;end;
Delay(30);
k:=k+1;
until KeyPressed;
end;
readkey;
SetColor(7);
x1:=0;y1:=0;
x2:=640;y2:=480;
n:=2;
Repeat{декоративная заливка экрана}
Rectangle(x1,y1,x2,y2);
x1:=x1+Round(n/2);y1:=y1+n;
x2:=x2-Round(n/2);y2:=y2-n;
until x1>240;
CloseGraph; {завершение работы в графическом режиме}
end;
end.
