Работа в графическом режиме BC++. Инициализаия графического режима ВС++

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

3 страницы (Word-файл)

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

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

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

Кафедра МОП ЭВМ

Лабораторная работа №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();

}

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

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

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