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

Компонентные функции

 

Если определение функции полностью размещено в классе, то эта функция по умолчанию считается подставляемой, т.е. при каждом вызове код функций встраивается в точку вызова.

 

При внешнем определении в теле класса располагается прототип функции:

<Тип> <имя функции >(спецификация формальных параметров);

 

Вне тела класса компонентная функция определяется следующим образом:

<Тип ><имя класса>::<имя функции>(спецификация формальных

параметров)

{ тело функции };

Функция компонент класса имеет туже область видимости, что и класс.

 

Пример: Работа с графической библиотекой

 

При объявлении методов класса использовались (инкапсулировались) графические функции, прототипы которыхнаходятся взаголовочном файлеgraphics.h

Все эти функции предоставляют возможности управления графическим экраном.

Стандартное состояние ПК – соответствует работе экрана в текстовом режиме (25 строк по 80 символов в строке).

Если мы хотим использовать графические средства компьютера, необходимо инициировать графический режим работы дисплейного адаптера.

Для управления техническими средствами ПК имеются соответствующие программы, называемые драйверами.

Графический драйвер управляет дисплейным адаптером в графическом режиме.

Графические возможности адаптера определяются разрешением экрана (количеством точек экрана) и количеством цветов, которыми может светиться каждая точка.

Наиболее распространенные дисплейные адаптеры (CGA - Color Graphics Adapter, EGA – Enhanced (усиленный) Graphics Adapter, VGA – Video Graphics Array (графический видеомассив), SVGA и т. д. ) могут иметь несколько графических режимов работы. Для управления современными графическими адаптерами мы используем драйвер EGAVGA.BGI

Экран представляет собой совокупность светящихся точек - пикселей. Количество точек определяется монитором и режимом драйвера для работы с ним. Положение пикселя определяется его координатами по отношению к точке с координатами 0, 0 – верхнему левому углу экрана.

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

 

void 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 <graphics.h>

#include <conio.h>//содержит прототип функции getch( )

// опишем класс

class point { //точка на экране дисплея

int x, y ;// собственные компонентные данные

public:// общедоступные компонентные функции

point (int xx=0 , int yy =0) ; // прототип конструктора

// с умалчиваемыми значениями

 

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

 

void move ( int xo=0 , int yo =0) ;// прототип функции

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

private :// собственная функция класса

void hide ( ) ;// прототип функции, убирающей точку с экрана

} ;

//дадим внешнее определение методам класса

 

point::point( int xx=0, int yy=0 )// определение конструктора

{ x = xx ; y = yy ; }

void point :: show (void)

{ putpixel (x, y , getcolor( ) ) ;} // int getcolor(void)

//возвращает номер цвета символов

void point :: hide(void)

{ putpixel (x, y , getbkcolor( )) ; }

void point ::move ( int xn=0, int yn=0 )

{ hide ( ) ;

x =xn ; y= yn ;

show ( ) ; }