Здавалка
Главная | Обратная связь

Задание на выполнение работы



1) Записать и опробовать программу «Калькулятор».

2)Записать программы для примеров 1-5 из введения, откомпилировать их и опробовать для разных параметров и представления данных.

3) Записать программу «стрелка», произвести отладку программы и запустить в работу.

4) Построить график функции. Задается преподавателем.

 

Содержание отчета:

 

1) Полные программы для рисования построенных объектов.

2) Результаты построений.

 

Контрольные вопросы

 

1) Назовите основные “рисующие функции”

2) Перечислите аргументы функций Arc() ,Pie().

3) Назовите основные функции вывода текстовой информации в графическом режиме.

Лабораторная работа № 3

Растровая графика двухмерных графических объектов

 

Цель работы: научиться работать с графическими функциями для рисования дуг, окружностей, эллипсов и других графических примитивов.

 

Содержание работы

 

Для режима рисования необходимо установить на компьютере графический режим работы. Он устанавливается графической функцией initgraph(), полный текст которой следующий:

{

void initgraph (void)

int driver, mode, errorcode, Xmax, Ymax ;

register int i;

driver = DETECT;

initgraph (&driver, &mode, “ “);

Xmax = getmaxx( ); Ymax = getmaxy();

errorcode = graphresult();

if (errorcode!=grOk) /*если произошла ошибка*/

{ printf (“Ошибка:% s\n” grapherrormsg (errorcode));

printf (“Для останова нажмите любую клавишу \n”);

getch();

exit (1); /*Завершение работы*/

}

Для облегчения работы (чтобы каждый раз не записывать эти строки) создайте специальный заголовочный файл zaggraf.c, содержащий указанный текст, и поместите его в директорию INCLUDE.

Для входа в графический режим необходимо:

1) В заголовок программы поместить строку: # include<zaggraf.c>

2) Вместо записи intgraph() - указать zaggraf();

Функции Турбо Си позволяют эффективно рисовать окружности, дуги, секторы, эллипсы. Прототипы этих функций записываются следующим образом:

void far circle (int x, int y, int radius);

void far arc (int x, int y, int stangle, int endangle, int xradius, int yradius);

void far getarccoords(srtuct arccoordstype far * arccoords);

Структура arccoordstype записана в файле GRAPHICS.H как:

sruct arccoordstype

{ int x, y;

int xstart, ystart, xend, yend;

}

Тип графического видеоадаптера определяет количество цветов, и какие цвета могут быть использованы в графическом режиме. Наибольшая разница существует между адаптерами EGA и CGA. Видеоадаптер имеет четыре цвета в палитре и четыре палитры. Это значит, что на экране одновременно могут быть четыре цвета. Цвета нумеруются от 0 до 3. Палитры также нумеруются от 0 до 3. Цвет номер 0 всегда совпадает с цветом фона. Драйвер VGA c цветами работает также как и драйвер СGA, только имеет более высокое разрешение.

Установка цвета фона производится функцией

void far setbkcolor(int color);

а изменение палитры_функцией

void far setpalette( int index,int color);

причем эта функция не применима для видеоадаптера CGA за исключением цвета фона, который всегда имеет index, равный нулю.

Функция circle() рисует на экране окружность с центром в точке с координатами (x,y) и радиусом radius (единица измерения-пиксель) текущим цветом. По умолчанию цвет устанавливается WHITE. Изменить цвет линии можно функцией setcolor() с прототипом

void far setcolor(int color);

К другим рисующим функциям относятся:

arc()- рисует дугу окружности,

drawpoly()-рисует контур многоугольника,

elipse()-рисует эллипс,

rectangle-рисует прямоугольник.

Прототипы рисующих функций приведены в разделе 1.

Для закрашивания (заполнения) замкнутого контура служит функция floodfill(), которая закрашивает область заданным цветом по заданному шаблону. Ее прототип

void far floodfill(int x,int y,bordercolor);

где x, y- координаты точки внутри контура заполнения, bordercolor-цвет контура.

Цвет и шаблон заполнения устанавливается функцией

void far setfillstyle(int pattern, int color);

Вид шаблона закрашивания и соответствующие ему МАКРОС и значение (pattern) приведены в табл.2. Обратите внимание, что все макросы записываются с прописной буквы с подчеркиванием.

Примеры использования рисующих функций.

 

Пример 1

/*Рисование квадрата в центре экрана*/

.....................................................................................

main()

{

---------------------

left=getmaxx()/2-50; /* задается верхний*/

top=getmaxy()/2-50; /*левый угол */

right=getmaxx()/2+50; /* задается нижний */

bottom=getmaxy()/2+50; /*правый угол*/

/*Рисование квадрата*/

rectangle(left,top,right,bottom);

getch();

}

 

Пример 2

/*Программа рисует круг в левом верхнем углу, который перемещается

по диагонали вниз*/

main()

{

int ym=480 xm=640, r=50;

dx=((xm-2*r)/150); dy=((ym-2*r)/150);

x=r; y=r;

initgraph (void);

setviewport(1,1,640,480,0); / * задание окна вывода*/

setbkcolor(BLACK); /*задание цвета фона */

setcolor(WHITE); /* задание цвета примитива*/

clearviewport(); /* очистка окна вывода */

setwritemode(1); /* задание типа печати */

circle(r,r,r); /* рисование окружности */

getch(); /* ждать нажатия клавиши */

/* перемещение окружности по диагонали */

while((y<ym-r)&&(x<xm-r)

{

setcolor(WHITE);

circle(x,y,r);

setcolor(BLACK);

circle(x,y,r);

x=dx+x;

y=dy+y;

}

circle(xm-r,ym-r,r);

getch();

return 0;

}







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.