46559 (607861), страница 3

Файл №607861 46559 (C++: Стандартные библиотечные функции работы с графикой) 3 страница46559 (607861) страница 32016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

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

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

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

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

Таблица 6.

Константа

Значение

Результат

SOLID_LINE

0

Сплошная линия

DOTTED_LINE

1

Пунктир

CENTER_LINE

2

Центрированная линия

DASHED_LINE

3

Пунктирная линия

USERBIT_LINE

4

Определяется пользователем

line_widths – Константа ширины линий для функций getlinesettings() и setlinestyle()( см. таблицу 7).

Таблица 7.

Константа

Значение

Результат

NORM_WIDTH

1

Ширина в 1-н пиксель

THICK_WIDTH

3

Ширина в 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

xxxxxxxxxxxxxxxx

0x3333(штрих пунктир)

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_PUT

0

Битовый рисунок источника копируется на экран.

XOR_PUT

1

Исключающее ИЛИ. Отображает на экране исходное изображение.

OR_PUT

2

ИЛИ. Отображает на экране текущее изображение, не убирая предыдущего выведенного этого же изображения.

AND_PUT

3

Выводит на экран картинку поверх остальных объектов.

NOT_PUT

4

Копирует и вставляет инверсированный источник.

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

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

Аргумент

Константа

Значение

Результат

Horiz

LEFT_TEXT

CENTER_TEXT

RIGHT_TEXT

0

1

2

По левому краю

По центру

По правому краю

Vert

BOTTOM_TEXT

CENTER_TEXT

TOP_TEXT

0

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_NONE

0

Кнопки мыши не нажаты

MB_LEFT

1

Нажата левая кнопка мыши

MB_RIGHT

2

Нажата правая кнопка мыши

MB_LAR

3

Нажаты обе кнопки мыши

MB_MIDDLE

4

Нажата средняя кнопка мыши

Уточнение: константа 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 ”, иначе его подключение будет выглядеть как “#include “mouse.h””.

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


Заключение

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

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


Приложение 1

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

#include

#include

#include

#include

#include

const

MB_NONE = 0,

MB_LEFT = 1,

MB_RIGHT = 2,

Характеристики

Тип файла
Документ
Размер
483,41 Kb
Тип материала
Учебное заведение
Неизвестно

Список файлов курсовой работы

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7028
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее