| Каталог | Индекс раздела |
| Назад | Оглавление | Вперед |
1. ЦЕЛЬ РАБОТЫ: познакомиться с возможностями графических операторов, построение графических изображений в Паскале.
2. ОСНОВНЫЕ СВЕДЕНИЯ
На экране компьютера можно получать не только последовательности символов, но и разнообразные рисунки, схемы, картинки. Для этого в Паскаль включаются специальные средства - графические процедуры и операторы, которые находятся в модуле Graph.
Следует отметить, что графическое изображение на экране составляется из точек (например, как фотографии в газетах, журналах и др.). Количество точек (пикселей) на экране зависит от разрешающей способности экрана. Каждая точка задается двумя координатами (x, y). Точка с координатами (0,0) находится в левом верхнем углу экрана. Ось X направлена вправо, а ось Y вниз.
Процесс построения изображений с помощью графических процедур разбивается на отдельные этапы:
- Переключить монитор в графический режим с помощью оператора
InitGraph (Driver, mode, <путь к драйверу>).- Установить разрешающую способность экрана по умолчанию режимом
Detectили процедуройSetGraphMode. РежимDetectустанавливает разрешающую способность экрана 640*480 пикселей, т.е. координатаXможет принимать значения от 0 по 639, аYот 0 по 479.- Очистить и инициализировать графический экран процедурой
ClearDevice.- Установить цвет фона оператором
SetBkColorи цвет изображения операторомSetColor.- Вывести на экран точки, отрезки, прямоугольники, дуги, окружности, эллипсы.
- Вывести на экран закрашенные фигуры.
- Вывести тексты и подписи на экран. Для использования операторов
WriteиWritelnв графическом режиме необходимо выполнить следующую операцию присваивания:DirectVideo := FALSE;Или использовать процедуруOuttextxy(x,y,st), которая выводит строкуst, начиная с позиции (x,y).
Цвета в операторах задаются с помощью своих кодов:
| 0 - черный; | 4 - красный; | 8 - темно-серый; | 12 - ярко-красный; |
| 1 - синий; | 5 - пурпурный; | 9 - ярко-синий; | 13 - ярко-пурпурный; |
| 2 -зеленый; | 6 - коричневый; | 10 - ярко-зеленый; | 14 - желтый; |
| 3 - бирюзовый; | 7 - светло-серый; | 11 - ярко-бирюзовый; | 15 - белый. |
Цифровое кодирование цвета соответствует последовательности IRGB для 0-3 битов. Бит 3 - бит интенсивности I, бит 2 - бит красного R, бит 1 - бит зеленого G, бит 0 - бит синего B. Например, 11=8+2+1, т.е. биты 3,1,0 - интенсивный сине-зеленый (бирюзовый).
Основные графические операторы для построения изображений:
PutPixel(X, Y, <цвет>) - вывод точки на экран, где X, Y - координаты точки ;
Line(X1, Y1, X2, Y2) - проводит линию из точки с координатами (X1, Y1) в точку с координатами (X2, Y2);
Rectangle(X1, Y1, X2, Y2) - прямоугольник со сторонами, параллельными осям координат; (X1, Y1) и (X2, Y2) - координаты, определяющие одну из диагоналей прямоугольника ;
Bar(X1, Y1, X2, Y2) - закрашенный прямоугольник (без окантовки);
Circle (X, Y, <радиус>) - на экран выводится окружность с центром в точке (X, Y) (тип integer) ;
Arc(X, Y, <начальный угол>, <конечный угол>, <радиус>) - на экран выводится дуга окружности с центром в точке (X, Y ); углы задаются в градусах; дуга рисуется ПРОТИВ часовой стрелки;
Ellipse(X, Y, <начальный угол>, <конечный угол>, <горизонтальный радиус>, <вертикальный радиус>) - на экран выводится эллиптическая дуга с центром в точке с координатами (X, Y) (тип integer);
SetFillStyle(<заполнение>, <цвет>) - определение вида и цвета заполнения области;
FloodFill (x, y, <цвет границы>) - заливка замкнутой области.
Пример программы построения графика функции.
program graphic;
uses graph,crt;
var driver, mode, errorcode : integer;
xm,ym,i,j : integer; pi,pi300,x1,y1,x2,y2, sc : real;
st1,st2,st3 : string;
function f(x:real) : real;
begin
f:=sin(x)+sin(2*x)+sin(3*x)-1-cos(x)-cos(2*x);{ функция для построения}
end; {графика}
begin
st1:='x';st2:='y';
st3:=' Нажмите ENTER';
sc:=50;
driver:=9; {egavga}
mode:=2; {640х480 пикселей}
initgraph(driver,mode,'d:\bp\bgi'); {инициализация графического режима }
errorcode:=graphresult;
if errorcode<>grok then {ошибка }
begin
writeln('ошибка инициализации граф. режима');
closegraph; halt;
end;
xm:=getmaxx div 2;
ym:=getmaxy div 2;
{ xm=320;ym=240;центр экрана}
line(xm,20,xm,460);{ось y}
line(20,ym,620,ym);{ ось x}
outtextxy(630,ym,st1); {маркировка оси х}
outtextxy(xm,10,st2); {маркировка оси у}
pi:=3.1415926; pi300:=pi/300;
x1:=-pi;
for i:=0 to 24 do {разметка оси x вертикальными черточками}
begin
line(xm+round(80*x1),230,xm+round(80*x1),250);
x1:=x1+pi300*25;
end;
x1:=-pi; {собственно построение графика отрезками прямых}
while x1<pi do
begin
y1:=f(x1);x2:=x1+pi300;
y2:=f(x2);
line(xm+round(80*x1), ym-round(sc*y1),
xm+round(80*x2), ym-round(sc*y2));
x1:=x2;
end;
outtextxy(270,470,st3);
readln;
closegraph;
end.
3. ВЫПОЛНЕНИЕ РАБОТЫ
- Набрать и откомпилировать приведенный пример программы.
- Объяснить логику данной программы.
- Согласно вариантам заданий из Лабораторной работы N6 составить программу построения графиков соответствующих функций.
4. КОНТРОЛЬНЫЕ ВОПРОСЫ
- Что такое графический режим и как в него перейти?
- Установка опций графического режима.
- Система координат и диапазоны их значений.
- Основные графические функции.
- Принципы построения графика функции.
- Привести пример построения 10 концентрических окружностей разного цвета.
| Каталог | Индекс раздела |
| Назад | Оглавление | Вперед |