Работа в графическом режиме BC++

Страницы работы

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

Министерство образования Российской Федерации

Комсомольский-на-Амуре Государственный Технический

Университет

Кафедра математического обеспечения и применения ЭВМ

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

по дисциплине «Программирование»

Тема: ”Работа в графическом режиме BC++ ”

Выполнил: Кормин И.А.

Группа: 4ВС-1

Проверил: Петров Ю.А.

2005 год


16. РАБОТА В ГРАФИЧЕСКОМ РЕЖИМЕ ВС++

Цель работы:

·  Научиться инициализировать графический режим ВС++;

·  Научиться пользоваться базовыми функциями видеопамяти;

·  Научиться использовать графические примитивы и вывод текстовых сообщений. 

Задание:

В графическом режиме определить максимальные значения координат страницы. Создать графическое окно, установить текущую графическую позицию, нарисовать какой-либо объект. Использовать коэффициент «неквадратности» при изображении объекта. Изменить рисующий цвет и фон объекта. Переместить объект. Использовать перечислимый тип putimage_ops. Предметная область может быть любая. При выполнении задания воспользоваться материалами лекций 20 и 21.

Текст программы:

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <dos.h>

#include <iostream.h>

//Функция, изменяющая цвет фона

void bkcolor(void)

{

static int a=0;

++a;

a%=16;

if (a==6) a++;    //не допускает совпадения цвета фона с цветом круга

setbkcolor(a);

};

void main(void)

{

clrscr();

//Автоопределение драйвера видеокарты

int gdriver = DETECT, gmode, errorcode;

//Инициализация графических и локальных переменных

initgraph(&gdriver, &gmode, "e:\\borlandc\\bgi");

//Если драйвер неопределен

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Графическая ошибка: %s\n", grapherrormsg(errorcode));

printf("Нажмите любую клавишу для продолжения:");

getch();

exit(1);

}

int xasp,yasp,midx,midy; //Объявление переменных

int radius = 100;        //Радиус окружности=100

float cor=6,i=2,j=2;     //Переменные цвета круга, шаг по осям x и y

midx = getmaxx() / 2;    //Определение центра экрана

midy = getmaxy() / 2;

getaspectratio(&xasp, &yasp);

setbkcolor(5);         //Цвет фона

setcolor(cor);         //Рисующий цвет

circle(midx, midy, radius);  //Рисуем окружность в центре

setfillstyle(SOLID_FILL,cor);     //Устанавливаем стиль и цвет заливки круга

floodfill(midx, midy,cor);     //Заливаем окружность

//Создаем указатель в котором содержится битовый образ окружности

char *buf=new char[imagesize(midx-102,midy-102,midx+102,midy+102)];

//Помещаем этот образ в выделенный заранее участок памяти

getimage(midx-102,midy-102,midx+102,midy+102,buf);

while(!kbhit())   //Цикл реагирования на нажатие клавиши

{                        //и перемещения окружности

midx+=i;

midy+=j;

//Изображаем битовый образ окружности на экране

putimage(midx-102,midy-102,buf,COPY_PUT);

setaspectratio(xasp,yasp);

//Если круг достиг левой или правой границы, он отскакивает

if(midx+i>=getmaxx()-102 || midx+i<=102)

{

i*=-1;

bkcolor();  //Функция изменения цвета фона

}

//То же самое, если он достигает верхней или нижней границы экрана

if(midy+j>=getmaxy()-102 || midy+j<=102)

{

j*=-1;

bkcolor(); //Функция изменения цвета фона

}

}

delete buf;

closegraph();  //Закрытие графического режима

}

Результат работы программы.

Инициализация графики с помощью утилиты BGIOBJ.EXE

  1. Создаем с помощью BGIOBJ.EXE из EGAVGA.BGI файл EGAVGA.OBJ:

2.  Создаем проект и подключаем туда файл с кодом нашей программы и файл EGAVGA.OBJ, полученный с помощбю программы BGIOBJ.EXE.

Текст программы:

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <dos.h>

#include <iostream.h>

void main(void)

{

clrscr();

int gdriver, gmode, errorcode;

//Инициализация графических и локальных переменных

registerfarbgidriver(EGAVGA_driver_far);

initgraph(&gdriver, &gmode,"");

//Если драйвер неопределен

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Графическая ошибка: %s\n", grapherrormsg(errorcode));

printf("Нажмите любую клавишу для продолжения:");

getch();

exit(1);

}

else printf("Инициализация прошла успешно!!!\n");

closegraph();

}

Результат работы программы.

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
84 Kb
Скачали:
0