C++: Стандартные библиотечные функции работы с графикой

Тема данной курсовой работы стандартные библиотечные функции работы с графикой в C++. В данном работе я постараюсь раскрыть основные моменты

C++: Стандартные библиотечные функции работы с графикой

Курсовой проект

Компьютеры, программирование

Другие курсовые по предмету

Компьютеры, программирование

Сдать работу со 100% гаранией
color1 1 1 1 1 1VGAVGALO VGAMED VGAHI0 1 2640 x 200 640 x 350 640 x 48016color 16color 16color2 2 1PC3270PC3270HI0720 x 3502color1IBM8514IBM8514HI IBM8514LO1 01024x 760 640 x 480256color 256color* - 64k на EGAMONO плате

** - 256k на EGAMONO плате

Данные параметры используются функциями detectgraph(), initgraph() и константами graphics_drivers.

HORIZ_DIR - Данный параметр устанавливает направление графического вывода шрифта (Имя параметра: HORIZ_DIR; Значение: 0; Направление: Слева на право). Данный параметр используется функциями gettextsettings(), settextstyle(), setusercharsize().

line_styles - Константы стилей линий для функций getlinesettings() и setlinestyle()( см. таблицу 6).

 

Таблица 6.

КонстантаЗначениеРезультатSOLID_LINE0Сплошная линияDOTTED_LINE1ПунктирCENTER_LINE2Центрированная линияDASHED_LINE3Пунктирная линияUSERBIT_LINE4Определяется пользователемline_widths - Константа ширины линий для функций getlinesettings() и setlinestyle()( см. таблицу 7).

 

Таблица 7.

КонстантаЗначениеРезультатNORM_WIDTH1Ширина в 1-н пиксельTHICK_WIDTH3Ширина в 3-и пикселя

linesettingstype - Используется функциями getlinesettings() и setlinestyle() для корректировки рисования линий.

struct linesettingstype

{

int linestyle;

int upattern;

int thickness;

}

 

Таблица 8. Описание переменных структуры linesettingstype.

ЭлементОписаниеupatternУстановленный пользователем битовый образец используется когда стиль линии стоит как USERBIT_LINE.linestyleОпределяет в каком виде будут выводится следующие линии( сплошной, пунктирный, центрированный).thicknessОпределяет будет ли толщина следующих линий обычной или толстой.

upattern - 16-и разрядный образец, который применяется только если стиль линии определён как USERBIT_LINE. В этом случае, когда бит в образце слова единица, соответствующая точка в линии рисуется установленным цветом.

Например, сплошная линия соответствует upattern равному 0xFFFF(т.е. рисуются все пиксели), в то время как пунктирная линия может быть если upattern равно 0x3333 или 0x0F0F или 0x3F3F( см. таблицу 9).

 

Таблица 9.

16-и битный образецupattern..xx..xx..xx..xx ....xxxx....xxxx ..xxxxxx..xxxxxx xxxxxxxxxxxxxxxx0x3333(штрих пунктир) 0x0F0F(длинный штрих пунктир) 0x3F3F(более длинный штрих пунктир) 0xFFFF(сплошная линия)

MAXCOLORS - Определяет максимальное число цветов для массива полей в palettetype. Используется функцией setallpalette().

palettetype - Содержит информацию о палитре для текущего графического драйвера при запросах с использованием функций getpalette(), setpalette(), setallpalette().

struct palettetype

{

unsigned char size;

signed char colors[MAXCOLORS+1];

}

 

Таблица 10. Описание элементов структуры palettetype.

ЭлементОписаниеSizeДаёт номер цветов в палитре для текущего графического драйвера в текущем режиме.colorsМассив байтов, содержащий необработанный номер цвета для каждого входа в палитру. Если элемент цветов -1, то палитра для данного входа не определена.

pointtype - Содержит координаты точки.

struct pointtype

{

int x;

int y;

}

putimage_ops - Параметры для функции putimage()( см. таблицу 11).

 

Таблица 11.

КонстантаЗначениеОписаниеCOPY_PUT0Битовый рисунок источника копируется на экран.XOR_PUT1Исключающее ИЛИ. Отображает на экране исходное изображение.OR_PUT2ИЛИ. Отображает на экране текущее изображение, не убирая предыдущего выведенного этого же изображения.AND_PUT3Выводит на экран картинку поверх остальных объектов.NOT_PUT4Копирует и вставляет инверсированный источник.

text_just - Параметр горизонтального и вертикального выравнивания для функции settextjustify().

Таблица 12. Значения параметра text_just.

АргументКонстантаЗначениеРезультатHorizLEFT_TEXT CENTER_TEXT RIGHT_TEXT0 1 2По левому краю По центру По правому краюVertBOTTOM_TEXT CENTER_TEXT TOP_TEXT0 1 2По низу По центру По верху

text directions - Настройки текста. Содержит два параметра HORIZ_DIR и VERT_DIR.

textsettingstype - Используется для получения текущих настроек текста функцией gettextsettings().

 

struct textsettingstype

{

int font;

int direction;

int charsize;

int horiz;

int vert;

}

 

USER_CHAR_SIZE - Определённый пользователем размер символа. В таблице 13 указаны значения данного параметра, а так же размеры шрифтов, соответствующие заданному параметру.

 

Таблица 13.

ЗначениеРазмер дисплея 8x8 растровых шрифтов1Символы дисплея в 8x8 экранных блоков2Символы дисплея в 16x16 экранных блоков......10Символы дисплея в 80x80 экранных блоков

Используется функциями gettextsettings(), settextstyle(), setusercharsize() и параметром textsettingstype.

VERT_DIR - Данный параметр устанавливает направление графического вывода шрифта (Имя параметра: VERT_DIR; Значение: 1; Направление: Снизу в верх, поворачивает выводимый текст на 90 градусов против часовой стрелки). Данный параметр используется функциями gettextsettings(), settextstyle(), setusercharsize().

viewporttype - Используется для получения настроек области вывода функцией getviewsettings().

 

struct viewporttype

{

int left;

int top;

int right;

int bottom;

int clip;

}

2. Реализация пользовательской библиотеки mouse.h

 

В стандартной комплектации BorlandC2.0, BorlandC3.1 или любой версии компилятора C++ от любой другой корпорации, будь то MicroSoft, AT&T и т.д. нет ни одного модуля работы с мышью как-то в обычном или графическом режиме. Я имею в виду приложения под ОС MS-DOS. Конечно, написание такого модуля сводится не только к знаниям языка C++, но и так называемого языка низкоуровневого программирования Assemblerа.

Итак, приступим. Для начала мы должны определить основные функции, типы и константы.

 

Таблица 1. Константы.

КонстантаЗначениеОписаниеMB_NONE0Кнопки мыши не нажатыMB_LEFT1Нажата левая кнопка мышиMB_RIGHT2Нажата правая кнопка мышиMB_LAR3Нажаты обе кнопки мышиMB_MIDDLE4Нажата средняя кнопка мыши

Уточнение: константа MB_MIDDLE работает только с системными мышами и мышами от компании Logitech.

Типы, которые мы будем использовать в нашем модуле:

 

struct tPoint

{

int x;

int y;

};

 

struct tMouseState

{

tPoint loc;

int but;

};

 

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

Структура tMouseState определяет позицию курсора и состояние кнопок мыши, т.е. нажата ли какая либо кнопка на мышке и если да то какая.

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

Функция ResetMouse() убивает мышь.

Функция ShowMouse() отображает курсор мыши на мониторе.

Функция HideMouse() скрывает курсор мыши.

Функция GetMouseState() типа tMouseState возвращает параметры мыши.

Функция MoveMouseCursor( int x, int y) перемещает курсор на заданную позицию.

Функция SetMouseVert( int max, int min) устанавливает вертикальные пределы для мыши. Например, если мышь до этой функции двигалась по всему монитору, т.е. от позиции (0, 0) до (640, 480), то после этой функции она будет двигаться только в установленном пространстве, т.е. от позиции (0, min) до (640, max).

Функция SetMouseHorz( int max, int min) устанавливает горизонтальные пределы для мыши. Данная функция полностью аналогична предыдущей. Мышь будет двигаться в пределах от (min, 0) до (max, 480).

Данные функции работают как в графическом, так и в обычном режимах. Если поместить этот модуль в папку где находятся основные модули с расширением *.h, то его можно подключать как #include <mouse.h>, иначе его подключение будет выглядеть как #include <путь>mouse.h.

Думаю что этих функция вполне достаточно для работы с мышью. Листинг модуля представлен в приложении 1.

Заключение

 

В данной курсовой работе мной был рассмотрен стандартный модуль для работы с графикой на языке C++ graphics.h. А также разработан собственный модуль для работы с мышкой в графическом и обычном режимах. Данный модуль является интеллектуальной собственностью. Его дальнейшее изменение без согласия разработчика невозможно. Хотя дополнение модуля другими функциями и классами без изменения исходного кода функций и типов возможно и приветствуется разработчиком. Программный код модуля может свободно распространятся и бесплатен.

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

Приложение 1

 

Листинг модуля mouse.h

 

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <iostream.h>

#include <graphics.h>

 

const

MB_NONE = 0,

MB_LEFT = 1,

MB_RIGHT = 2,

MB_LAR = 3,

MB_MIDDLE= 4;

 

struct tPoint{

int x;

int y;

};

 

struct tMouseState{

tPoint loc;

int but;

};

 

extern "C" void ResetMouse();

extern "C" void ShowMouse();

extern "C" void HideMouse();

extern "C" struct tMouseState GetMouseState( void);

extern "C"

Похожие работы

<< < 1 2 3 4 >