Министерство Образования и науки Российской Федерации
Комсомольский-на-Амуре Государственный Технический Университет
Кафедра МОП ЭВМ
Лабораторная работа №16
по дисциплине «Программирование»
«Работа в графическом режиме BC++»
Выполнил: Шелестов И.А.
Группа: 4ВС-1
Проверил: Петров Ю.А.
Комсомольск-на-Амуре
2005
Цель работы:
· Научиться инициализировать графический режим ВС++;
· Научиться пользоваться базовыми функциями видеопамяти;
· Научиться использовать графические примитивы и вывод текстовых сообщений.
Задание 1: Выполнить инициализацию графического режима двумя способами:
- с помощью функции initgraph() и драйвера в формате .bgi;
- с помощью утилиты bgiobj.exe и драйвера в формате .obj.
Предметная область может быть любая.
Задание 2: В графическом режиме определить максимальные значения координат страницы. Создать графическое окно, установить текущую графическую позицию, нарисовать какой-либо объект. Использовать коэффициент «неквадратности» при изображении объекта. Изменить рисующий цвет и фон объекта. Переместить объект. Использовать перечислимый тип putimage_ops. Предметная область может быть любая.
Чтобы инициализировать графический режим вторым способом, нужно в командной строке написать: bgiobj egavga. В результате получим файл egavga.obj. Его нужно включить в проект. Перед функцией initgraph() нужно добавить строчку registerbgidriver(EGAVGA_driver).
Программа рисования звезды.
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
void main()
{clrscr();
int gdriver=DETECT, gmode, errorcode;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver, &gmode, "C:\\BORLANDC\\BGI");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
int maxx,maxy,x,y;
maxx=getmaxx(); maxy=getmaxy();
//применение коэффициента «неквадратности» при изображении круга
int xasp,yasp;
setbkcolor(WHITE);
setcolor(GREEN);
getaspectratio(&xasp, &yasp);
circle(maxx/2, maxy/2, 50); //текущий коэф. «неквадратности»
getch();
cleardevice();
setaspectratio(xasp/2, yasp);
circle(maxx/2, maxy/2, 50); //измененный коэф. «неквадратности»
getch();
cleardevice();
//установка графического окна
setviewport((50),(50),(maxx-50),(maxy-50),1);
//установка стиля и цвета закрашивания
setfillstyle(SOLID_FILL,YELLOW);
maxx=getmaxx(); maxy=getmaxy();
//установка цвета фона и границ
setbkcolor(WHITE);
setcolor(RED);
//рисование звезды с помощью полилинии
int star[18];
//задание координат вершин
star[0]=80; star[1]=10;
star[2]=90; star[3]=60;
star[4]=140; star[5]=70;
star[6]=90; star[7]=80;
star[8]=80; star[9]=130;
star[10]=70; star[11]=80;
star[12]=20; star[13]=70;
star[14]=70; star[15]=60;
star[16]=star[0]; star[17]=star[1];
fillpoly(9,star);
getch();
//изменение цвета фона, границ и закрашивания
setbkcolor(LIGHTGRAY);
setcolor(BROWN);
setfillstyle(SOLID_FILL,GREEN);
//выделение памяти под копирование звезды
void *pam;
unsigned size;
size=imagesize(20,10,140,130);
pam=malloc(size);
//копирование и вставка звезды
getimage(20,10,140,130,pam);
putimage(200,maxy-230,pam,XOR_PUT);
putimage((maxx-240),10,pam,NOT_PUT);
fillpoly(9,star);
getch();
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.