Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Sb97809

.pdf
Скачиваний:
2
Добавлен:
13.02.2021
Размер:
441.54 Кб
Скачать

Область экрана задается координатами левого верхнего и правого нижнего углов. design, source – область памяти, в которую (из которой) переносится часть видеопамяти. В функции movetext() два последних аргумента указывают на координаты верхнего левого угла нового расположения области экрана.

17.2. Графика в С++

Так же как и в текстовом режиме, все графические функции оперируют окнами. Отличие графического окна от текстового состоит в том, что левый верхний угол имеет координаты (0;0). В текстовом режиме существуют строки, символы, а в графическом – пиксели, которые имеют свой цвет.

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

Установка видеоадаптера в графический режим: void initgraph (int * driver, int * mode, char * pach);

В состав графического пакета входят заголовочный файл graphics.h, библиотечный файл graphich.lib, драйверы графических устройств –*.bgi, символьные шрифты – *.chr.

Функция initgraph() считывает в память соответствующий драйвер, устанавливает видеорежим (mode) и определяет маршрут к директории, в которой находится соответствующий драйвер *.bgi. Если маршрут не указан, драйвер ищется в текущей директории.

При использовании initgraph() можно указать или конкретный драйвер, или задать автоматическое определение (детектирование) типа видеоадаптера и выбора соответствующего драйвера уже во время выполнения программы (макрос DETECT). Это позволяет переносить без изменения программы на компьютеры с другими видеоадаптерами.

Пример:

int driver = DETECT;

initgraph (& driver, & mode,””);

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

void closegraph(void); void restorecrtmode(void);

Функция closegraph() используется, если программа дальше будет работать в текстовом режиме. Эта функция освобождает память, занятую до вызова функции initgraph(). Если программа завершает работу, то можно при-

41

менить функцию restorecrtmode(), устанавливающую видеоадаптер в текстовый режим, который предшествовал первому вызову функции initgraph().

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

Установка цвета фона производится функцией void setbkcolor(int color);

а изменение палитры – функцией void setpalette(int index, int color);

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

void putpixel(int x,int y,int color);

Группа «рисующих» функций, использующиеся для создания геометрических объектов и фигур.

Функция line() чертит на экране прямую линию от точки с координатами х, у до точки с координатами х1, у1 текущим цветом:

void line(int x, int y, int x1, int y1);

Функция circle() рисует на экране окружность с центром в точке с координатами х, у и радиусом radius (единица измерения – пиксель):

void circle(int x, int y, int radius);

По умолчанию текущий цвет устанавливается WHITE. Изменить текущий цвет, которым рисуются линии, можно обратившись к функции:

void setcolor (int color);

Функция rectangle() рисует прямоугольник: void rectangle(int left, int top, int right, int bottom);

Для закрашивания (заполнения) замкнутого контура служит функция floodfill(), котораязакрашиваетобластьзаданнымцветомпозаданномушаблону:

void floodfill(int x, int y, int bordecolor);

где х, y – координаты точки внутри контура, bordecolor – цвет контура. Цвет и шаблон заполнения устанавливается функцией:

void setfillstyle(int pattern, int color);

Шаблон закрашивания и соответствующие ему макрос и значение pattern следующие:

42

0 – заполнение цветом фона;

1 – сплошное заполнение заданным цветом;

2 – заполнение при помощи линий.

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

void far setviewport (int left, int top, int right, int bottom, int flag);

Параметры left, top, right, bottom задают местоположение и размер окна в абсолютных координатах. Параметр flag устанавливает режим выхода за границу окна. Если flag ≠ 0, то происходит автоматическое прерывание выдачи при выходе за границу окна. При flag = 0 может происходить вывод за границами окна. И в том и в другом случае ошибка не фиксируется.

Пример:

// инициализация графического режима int driver = DETECT, gmode, error, code

//максимально возможный режим видеоадаптера initgraph(&driver, &mode, “ ”);

//результат инициализации errorcode=graphresult();

if (errorcode != grOK) // ошибка

{

printf(“Ошибка:%s\n, ” grapherrormsg(errorcode)); printf(“для останова нажмите любую клавишу \n”); getch();

exit(1); // завершение работы

}

}

Перечисленные функции служат для управления визуальными характеристиками окна и текста. Они отражают возможности языка программирования для использования функционала корректировки размера окна, его местоположения, очистки, изменения цвета; использования геометрических фигур.

43

Список рекомендуемой литературы

Березин Б. И., Березин С. Б. Начальный курс С и С++. М.: ДИАЛОГ-

МИФИ, 2005.

Богумирский Б. С. Руководство пользователя ПЭВМ: в 2-х ч. С-Пб.: Печатный двор, 1994.

Керниган Б., Ритчи Д.. Язык программирования Си. М.: Финансы и статистика, 1992.

Рассохин Д. От С к С++. М.: Эдель, 1993.

Страуструп Б. Язык программирования С++. Киев: Диасофт, 1991. Уэйт М., Парта С., Мартин Д. Язык Си: руководство для начинающих.

М.: Мир, 1998.

Эккель Б. Философия С++. Введение в стандартный С++. 2-е изд. СПб.:

Питер, 2004.

44

 

Оглавление

 

ВВЕДЕНИЕ..............................................................................................................

3

1.

ИМЕНА ЗАГОЛОВОЧНЫХ ФАЙЛОВ В С++ ................................................

5

2.

СТРОКОВЫЕ ПЕРЕМЕННЫЕ В С++ ..............................................................

5

3.

КЛЮЧЕВЫЕ СЛОВА BOOL, TRUE, FALSE ..................................................

6

4.

ССЫЛКИ В С++ ..................................................................................................

7

5.

ТИП VOID ............................................................................................................

8

6.

ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ НЕПОСРЕДСТВЕННО

 

 

ПЕРЕД ИСПОЛЬЗОВАНИЕМ...........................................................................

9

7.

ПЕРЕДАЧА ОБЪЕКТОВ КАК АРГУМЕНТОВ ФУНКЦИИ.......................

11

8.

МАССИВЫ ОБЪЕКТОВ..................................................................................

11

9.

УКАЗАТЕЛЬ НА ОБЪЕКТ..............................................................................

13

10. КЛЮЧЕВОЕ СЛОВО THIS............................................................................

13

11. ПЕРЕГРУЗКА ФУНКЦИЙ И ОПЕРАЦИЙ..................................................

14

 

11.1. Перегруженные функции......................................................................

14

 

11.2. Перегрузка конструктора ......................................................................

15

 

11.3. Выбор экземпляра функции..................................................................

16

 

11.4. Перегрузка стандартных операций ......................................................

17

 

11.5. Дружественные функции-операции.....................................................

19

 

11.6. Использование ссылочных переменных..............................................

20

12. АРГУМЕНТЫ ПО УМОЛЧАНИЮ...............................................................

21

13. УКАЗАТЕЛИ НА ПРОИЗВОДНЫЕ ТИПЫ ................................................

22

 

13.1. Виртуальные функции...........................................................................

22

 

13.2. Чистые виртуальные функции и абстрактные типы..........................

24

 

13.3. Виртуальные базовые классы...............................................................

25

14. ШАБЛОНЫ......................................................................................................

26

 

14.1. Шаблоны функций.................................................................................

27

 

14.2. Использование шаблонов с двумя типами параметров .....................

29

 

14.3. Шаблоны классов...................................................................................

29

15. ЧТЕНИЕ И ЗАПИСЬ ФАЙЛОВ....................................................................

30

 

15.1. Файл и поток ..........................................................................................

30

 

15.2. Открытие файла.....................................................................................

31

 

15.3. Запись символов в поток.......................................................................

32

45

15.4. Закрытие файла......................................................................................

33

15.5. Форматный ввод–вывод файлов ..........................................................

34

15.6. Ввод–вывод строк..................................................................................

34

15.7. Функции позиционирования ................................................................

35

15.8. Функции управления экраном..............................................................

36

16. ЛОКАЛЬНЫЕ КЛАССЫ................................................................................

36

16.1. Вложенные классы.................................................................................

37

17. ФУНКЦИИ УПРАВЛЕНИЯ ЭКРАНОМ......................................................

38

17.1. Функции работы в текстовом режиме.................................................

39

17.2. Графика в С++ ........................................................................................

41

Список рекомендуемой литературы....................................................................

44

Куракина Наталия Игоревна, Сулоева Елена Сергеевна

Объектно-ориентированное программирование на С++

Учебное пособие

Редактор Е. А. Ушакова

Компьютерная верстка Е. С. Николаевой

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Подписано в печать 05.04.19. Формат 60×84 1/16. Бумага офсетная. Печать цифровая. Печ. л. 3,0.

Гарнитура «Times New Roman». Тираж 136 экз. Заказ 48.

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Издательство СПбГЭТУ «ЛЭТИ» 197376, С.-Петербург, ул. Проф. Попова, 5

46

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]