Работа с графикой. Модуль Graph
Контрольная работа, 17 Декабря 2010, автор: пользователь скрыл имя
Описание работы
Для работы в графическом режиме используются свыше 50 стандартных процедур и функций. Все они выделены в отдельный модуль GRAPH. Для его подключения к основному модулю SYSTEM необходимы две переменные целого типа gd, gm. Модуль должен быть проинициализирован.
Работа содержит 1 файл
семинар.doc
— 43.00 Кб (Скачать)ТЕМА: РАБОТА С ГРАФИКОЙ. МОДУЛЬ GRAPH.
ПРОГРАММНОЕ
ОБЕСПЕЧЕНИЕ: Среда Turbo Pascal, модуль GRAPH.
ТЕОРИЯ:
Для работы в графическом режиме используются свыше 50 стандартных процедур и функций. Все они выделены в отдельный модуль GRAPH. Для его подключения к основному модулю SYSTEM необходимы две переменные целого типа gd, gm. Модуль должен быть проинициализирован.
В целом,
заголовок графической
Uses graph;
VAR
gd,dm: integer;
begin gd:=detect;
initgraph(gd,gm,’’); {инициализация графики}
. . .
CloseGraph; {завершение работы в графическом режиме
End.
Размер экрана:
640*480 пикселей, т.е. точек. Начало координат–
левый верхний угол, ось X направлена
слева направо, ось Y–сверху вниз. Цветов
–16: от белого до черного (прозрачного).
Можно цвета указывать номерами от 0 (черный
(прозрачный)) до 15 (белый).
На экране можно рисовать линии, точки, прямоугольники, окружности и эллипсы, делать надписи и т.д. Для этого используются следующие процедуры:
PutPixel(X,Y,Cvet); - процедура, которая выдаёт на экран точку с координатами X,Y и цветом Cvet;
СlearDevice; - процедура, которая очищает экран и устанавливает значения всех графических параметров, предусмотренные по умолчанию;
Line(X1,Y1,X2,Y2);-процедура, которая проводит прямую линию из точки с координатами(X1,Y1) в точку (X2,Y2) текущим цветом. Положение текущего указателя не изменяется;
SetColor(Сolor);-процедура, которая устанавливает цвет видимого изображения, задаваемый параметром Color;
SetBkColor(Сolor);-процедура, которая устанавливает цвет фона, задаваемый параметром Color;
Rectangle(X1,Y1,X2,Y2); - процедура, которая рисует прямоугольник с координатами(X1,Y1) – верхний левый угол и (X2,Y2) – нижний правый угол, используя стандартный цвет закраски;
Circle(X,Y, Radius); - процедура, которая рисует окружность с центром(X,Y) и радиусом Radius;
Для работы
нам понадобится процедура
Процедура
DELAY. Обеспечивает задержку выполнения
программы на указанное число тактов X;
формат обращения
DELAY (X);.
- Итак, начнем рисование нашей картины с рамки, как и положено. Рисуем прямоугольник:
Uses graph, CRT;
VAR X,Y, N, gd,dm, i,r: integer;
begin gd:=detect;
initgraph(gd,gm,’’);
rectangle(0,0,640,480);
readln;
CloseGraph;
End.
- Чтобы рамка была красивой, нужны еще 2 прямоугольника с разницей в координатах в 5 пикселей. Добавляем в программу процедуру рисования прямоугольника: с координатами: rectangle(5,5,635,475);
- Координаты третьего прямоугольника меньшего размера подсчитайте сами.
- Рисуем линию LINE (0,0,640,480);. Добавляем в основную программу процедуры LINE для рисования следующей основы нашей картины:
Нарисуем окружность с центром в начале координат и радиусом 20: Circle (0,0, 20);
- Попробуем цикл For r:=20 to 100 do
Circle (320,240, r);
- И получилось кольцо. Чтобы исправить положение, используем конструкцию
R:=20;
While r<=100 do begin
r:=r+20;
End;
- Ecли радиус в конце концов увеличится до 100 ., то в результате получится нечто вроде паутины. (Не хватает только паучка).
- Теперь пусть она исчезнет.
Setcolor(0);
While r>=20 do begin
Circle (320,240, r);
r:=r-20;
End;
- Сделаем ее пульсирующей (появилась, исчезла) и так хотя бы 5 раз. (Добавим цикл For i:=1 to 5 do begin . . . end, внутри которого разместятся наши два цикла). Если процесс происходит очень быстро, в циклы добавим паузу Delay(n), где n – время задержки в миллисекундах.
- Изменим цвет паутины с белого (по умолчанию) на серый, например:
For i:=1 to 5 do begin
Setcolor(8); { или Setcolor(9); выберите цвет, какой нравится Вам}
r:=20;
While r<=? do begin
. . .
End;
While r>=? do begin
. . .
End;
End;
- Подберем подходящий цвет фона.
- Попробуем сделать так, чтобы каждая окружность рисовалась цветом, следующим в палитре.
- Если окружностей много, то должен появиться провал, окружность, которую не видно. Это происходит за счет того, что окружность рисуется цветом фона. Как этого избежать, пропустить цвет, если его номер дошел до цвета фона?