Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Наследование.doc
Скачиваний:
16
Добавлен:
18.04.2015
Размер:
169.47 Кб
Скачать

Initgraph( тип графического драйвера, режим адаптера , путь к драйверу)

Void far initgraph (int far * graphdriver, int far * graphmode, char far * pathtodriver);

Для указания типа драйвера в файле имеются константы:

DETECT= 0 (режим автоопределения типа)

CGA =1

EGA=3

VGA=9

и т. д.

Аналогично имеются константы для определения моды адаптера.

Но если программа рассчитана на работу с любым адаптером, вызов функции можно производить с требованием автоопределения типа драйвера:

int dr = DETECT , // тип драйвера и

mod ; // режим работы адаптера

// определяются автоматически

//режим при этом выбирается с максимальным разрешением

initgraph ( &dr , &mod , "D:\\Borlandc\\BGI" );

// предполагается, что драйвер находится в каталоге BGI

/* #include<conio.h>

#include “point.h”

#include ”point.cpp”

Void main ( )

{ // создается три объекта , три невидимых точки

point A ( 150, 70 );

point B ; // координаты по умолчанию равны x=0 и y=0

point D ( 400, 200);

//инициализация графики

int dr = DETECT , // тип драйвера и адаптера - режим авто определения

mod ; // режим работы адаптера

initgraph ( &dr , &mod , "D:\\Borlandc\\BGI" ); // -

// - перевод в графический режим

int errorcode=graphresult();

if(errorcode!=grOk){cout<<grapherrormsg(errorcode) ;

getch( ) ; exit(0);}

//установка цвета

setcolor(7) ; // установка цвета для линий и символов

A.show ( ) ; // показать на экране точку А

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

B.show ( ) ; // показать на экране точку В

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

D.show ( ) ; // показать на экране точку D

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

A.move ( ) ; // переместить точку А в начало координат

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

B.move(50, 60 ) ; // переместить точку B

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

*/

Рассмотрим класс “ пятно”

// определение класса spot находится в модуле spot.cpp

#ifndef SP

#define SP 1

#include “point.cpp”

class spot: public point { // класс spot производный от класса point

protected: //защищенные данные производного класса

int rad; // радиус пятна

int vis; // признак видимости пятна на экране

int tag ; // признак сохранения образа пятна в памяти

void*pspot; //указатель на область ОП для изображения пятна

//(битового образа)

public:

spot(int xi, int yi, int ri):point(xi, yi) //конструктор производного класса с

//вызовом конструктора базового класса

{

int size; vis =0 ; tag =0; rad =ri;

size = imagesize ( xi-ri, yi-ri, xi+ ri, yi+ ri);

// определяется объем памяти в байтах для

// для сохранения образа квадратного участка экрана, на котором будет

// изображено пятно

pspot=new char[size] ; } //выделение памяти под битовый образ

~spot() //деструктор производного класса

{hide (); // удаление с экрана изображения пятна

tag =0;

delete pspot;} // освободить память, выделенную под битовый образ

void show() //функция – изображения пятна на экране

{ if (tag ==0) // если в памяти нет битового образа пятна

//то его не может быть на экране

| //рисуем на экране и помещаем в память

{ circle(x, y, rad); // нарисовать окружность

floodfill (x, y, getcolor()); // заполнить произвольную замкнутую фигуру

// x , y-координаты точки внутри фигуры, последний

// параметр задает цвет границы

getimage(x-rad,y-rad,x+rad,y+rad, pspot);

// помещает в память копию прямоугольного фрагмента

// изображения – битовый образ

tag=1; // признак наличия образа в памяти

}

else //если пятно есть в памяти

if ( vis ==0) //но его нет на экране

putimage(x-rad, y-rad, pspot, XOR_PUT);

// выводит в заданную область экрана копию изображения, размещенного в

// памяти последний параметр определяет способ копирования – если //изображение вывести на экран в то место, где уже есть тоже изображение, то //оно исчезнет

vis=1; // признак видимости пятна на экране для обоих случаев

}

void hide ( ) //функция убирающая изображение пятна с экрана

{ if (vis ==0) //если изображения нет на экране

return;

putimage(x-rad, y-rad, pspot, XOR_PUT); //замазать изображение

vis=0;

}

void move ( int xn, int yn) //функция перемещения пятна на экране

{ hide(); // убрать пятно в т. x,y

x=xn; y=yn; // координатам задать новое значение

show(); } // изобразить пятно в новой точке экрана

void vary ( float dr) // функция изменяющая размеры пятна

{ float a;