Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ОАиП.doc
Скачиваний:
17
Добавлен:
01.04.2025
Размер:
5.06 Mб
Скачать

2. Установка цвета

Процедура SetBkColor(Color:Word ) устанавливает цвет фона экрана.

Функция GetBkColorWord возвращает номер текущего цвета фона.

Процедура SetColor(Color:Word) устанавливает цвет выводимой на экран информации.

Функция GetColor:Word возвращает номер текущего цвета в палитре.

Функция GetMaxColor:Word возвращает максимальный номер цвета в установленной палитре.

Функция GetPaletteSize:Word возвращает количество цветов в установленной палитре.

Процедура SetPalette( ColorNumWord; ColorShortInt ) устанавливает цвет Color для компоненты палитры с номером ColorNum.

Процедура GetPalette( Var Palette:PaletteType ) возвращает установленную палитру и количество цветов.

Процедура GetDefaultPalette( Var Palette. PaletteType ) возвращает параметры исходной палитры, установленной при инициализацииграфического режима.

3. Управление экраном

Процедура SetViewPort (X1,Y1,X2,Y2:Integer; Clip:Boolean ) определяет размеры окна для вывода графической информации.

Процедура GetViewSettings(Var ViewPort:ViewPortType) возвращает параметры установленного графического окна.

Процедура ClearVievPort очищает текущее графическое окно.

Процедура ClearDevice очищает весь экран.

Процедура SetActivePage(Page:Word) устанавливает номер активной страницы, доступной для записи новой графической информации.

Процедура SetVisualPage(Page:Word) устанавливает номер страницы, отображаемой на экране.

Процедура SetAspectRatio(Xasp,Yasp:Word) устанавливает относительный масштаб изображения по горизонтали и вертикали.

Процедура GetAspectRatio(Var Xasp,Yasp:Word) возвращает относительный масштаб изображения по горизонтали и вертикали.

Функция ImageSize( X1,Y1,X2,Y2:Integer ):Word возвращает количество байтов, необходимых для размещения в памяти прямоугольной области крана с координатами X1,Y1,X2,Y2.

Процедура GetImage(X1,Y1,X2,Y2:Integer; Var BitMap) сохраняет изображение прямоугольного фрагмента экрана.

Процедура Putlmage(X,Y:Integer; Var BitMap; Bitblt:Word) преобразует и уводит на экран изображение, записанное в двоичном коде.

4. Работа с точками изображения

Процедура PutPixel(X,Y:lnteger;Color:Word) окрашивает в заданный цвет точку экрана.

Функции GetX:Integer; GetY:Integer возвращают значения текущих координат относительно текущего окна.

Функции GetMaxX:Integer; GetMaxY:Integer возвращают максимальные значения координат.

Функция GetPixel (X,Y:Integer) возвращает цвет точки экрана с координатами X,Y.

Процедура MoveTo (X,Y: Integer) перемещает текущий указатель в точку с заданными координатами.

Процедура MoveRel (dX,dY:Integer) перемещает текущий указатель в точ-

ку с заданными приращениями координат относительно текущих.

Лабораторная работа № 35.

Тема: Разработка алгоритмов и программ с использованием процедур и функций модуля Graph.

Цель работы: Научиться разрабатывать алгоритмы и программы с использованием процедур и функций модуля Graph.

Средства: ПЭВМ, среда разработки Pascal.

Актуализация опорных знаний

1. Стандартные процедуры и функции модуля Graph.

2. Методы создания анимации.

Примеры выполнения заданий

Задание 1: Разработать алгоритм и программу решения задачи, в которой необходимо сформировать из элементов(рисунок 12) узор и заполнить им экран. Элемент узора необходимо создать при помощи процедур MoveTo, MoveRel, LineRel модуля Graph.

Рисунок 12 – Элемент узора

Uses Graph, CRT;

var

i,j,d,m,e,x,cx,cy: Integer;

z:longint;

Procedure Orn(X,Y:Integer);

begin

MoveTo(X,Y);

LineRel(0,20);

LineRel(20,0);

LineRel(0,-20);

LineRel(-20,0);

MoveRel(0,10);

LineRel(10,10);

LineRel(-5,-20);

MoveRel(10,0);

LineRel(-5,20);

LineRel(10,-10);

end;

begin

d := Detect; InitGraph(d, m, ' ') ;

e := GraphResult; if e <> grOk then

WriteLn(GraphErrorMsg(e))

else

begin

55

for i:=0 to 30 do

for j:=0 to 22 do

Orn(i*20,j*20);

repeat

until KeyPressed;

if ReadKey=#0 then x := ord(ReadKey);

CloseGraph;

end;

end.

Задание 2: Разработать алгоритм и программу решения задачи, в которой необходимо при помощи процедур и функций модуля Graph нарисовать лампочку со спиралью. При нажатии клавиши лампочка должна загораться (спираль красного цвета) или тухнуть (спираль черного цвета).

Uses Graph, CRT;

Label

l1;

var

d,m,e,x: Integer;

kod:integer;

begin

d := Detect; InitGraph(d, m, ' ') ;

e := GraphResult; if e <> grOk then

WriteLn(GraphErrorMsg(e))

else

begin

{Lampochka}

Rectangle(300,300,330,330);

Line(300,300,280,250);

Line(330,300,350,250);

Ellipse(315,250,0,180,35,50);

FloodFill(330,260,White);

{Spiral Black}

SetColor(Black);

Line(310,299,300,240);

Line(320,299,330,240);

Ellipse(325,240,0,180,5,10);

Ellipse(315,240,0,180,5,10);

Ellipse(305,240,0,180,5,10);

x:=0;

l1:

repeat

until keypressed;

if x=0 then

begin

{Spiral Red}

SetColor(Red);

Line(310,299,300,240);

56

Line(320,299,330,240);

Ellipse(325,240,0,180,5,10);

Ellipse(315,240,0,180,5,10);

Ellipse(305,240,0,180,5,10);

x:=1;

end

else

if x=1 then

begin

{Spiral Black}

SetColor(Black);

Line(310,299,300,240);

Line(320,299,330,240);

Ellipse(325,240,0,180,5,10);

Ellipse(315,240,0,180,5,10);

Ellipse(305,240,0,180,5,10);

x:=0;

end;

end;

if Readkey=#13 then CloseGraph else Goto l1;

end.