Работа с графикой. Модуль Graph

Автор: Пользователь скрыл имя, 17 Декабря 2010 в 10:08, контрольная работа

Описание работы

Для работы в графическом режиме используются свыше 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;

Для работы нам понадобится процедура модуля CRT:

      Процедура DELAY. Обеспечивает задержку выполнения программы на указанное число тактов X; формат обращения                        DELAY (X);.  
 

   
  1. Итак, начнем рисование  нашей картины с рамки, как  и положено. Рисуем  прямоугольник:

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. 

   
  1. Чтобы рамка  была красивой, нужны еще 2 прямоугольника с разницей в координатах в 5 пикселей. Добавляем в программу процедуру рисования прямоугольника: с координатами:  rectangle(5,5,635,475);
  2. Координаты третьего прямоугольника меньшего размера подсчитайте сами.
  3. Рисуем линию LINE (0,0,640,480);. Добавляем в основную программу процедуры LINE для рисования следующей основы нашей картины:

    Нарисуем  окружность с центром в начале координат и радиусом 20:       Circle (0,0, 20);

  1. Попробуем цикл                                            For r:=20 to 100 do

          Circle (320,240, r);

  1. И получилось  кольцо. Чтобы исправить положение, используем конструкцию

      R:=20;

      While r<=100 do begin

                                    Circle (320,240, r);

                r:=r+20;

      End;

  1. Ecли радиус в конце концов увеличится  до 100 ., то в результате получится нечто вроде паутины. (Не хватает только паучка).
  2. Теперь пусть она исчезнет.

      Setcolor(0);

      While r>=20 do begin

         Circle (320,240, r);

                r:=r-20;

      End;

  1. Сделаем ее пульсирующей (появилась, исчезла) и так хотя бы 5 раз. (Добавим цикл For i:=1 to 5 do begin . . . end, внутри которого разместятся наши два цикла). Если процесс происходит очень быстро, в циклы добавим паузу Delay(n), где n – время задержки в миллисекундах.
  2. Изменим цвет паутины с белого (по умолчанию) на серый, например:

      For i:=1 to 5 do begin

      Setcolor(8);   { или Setcolor(9); выберите цвет, какой нравится Вам}

      r:=20;

      While r<=? do begin

          . . .

      End;

      While r>=? do begin

          . . .

      End;

      End;

  1. Подберем подходящий цвет фона.
  2. Попробуем сделать так, чтобы каждая окружность  рисовалась цветом, следующим в палитре.
  3. Если окружностей много, то должен появиться провал, окружность, которую не видно. Это происходит за счет того, что окружность рисуется цветом фона. Как этого избежать, пропустить цвет, если его номер дошел до цвета фона?

Информация о работе Работа с графикой. Модуль Graph