Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)


 

 

 

 



Параметры и атрибуты графического вывода



 

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

Все функции библиотеки графики Turbo С, генерирующие вывод информации на экран, работают в пределах текущего графического окна. Для графического вывода используется текущий цвет пиксела, установленный функ­цией setcolor().

При выводе отрезков прямых линий и графических при­митивов система графики Turbo С позволяет определить та­кой параметр, как стиль линии. Turbo С поддерживает ряд предопределенных стилей линий. Как и в случае маски запол­нения, пользователь может описать собственный стиль линии. Для определения текущей установки стиля используется функ­ция getlinesettings(). Выбор подходящего стиля выполняет фун­кция setlinestyle().

 

#include <graphics.h>

void getlinesettings (struct linesettingstype *lineinfo)

Возвращает информацию об установленном в текущий момент времени стиле "рисования" отрезков прямых линий и графических примитивов. Функция заполняет поля структурной переменной по шаблону struct linesettingstype. Структурную переменную описывает точка вызова и передает в функцию указатель lineinfo на эту переменную. Шаблон struct linesettingstype описан в заголовочном файле <graphics.h> следующим образом:

 

Struct linesettingstype

{

int linestyle; /*идентифицирует стиль линии*/

unsigned upattern;/*задает определенный пользователем стиль линии. Имеет значение только тогда, когда linestyle = USERBIT_LINE*/

int thickness; /*задает толщину линии*/

}

Стиль линии задается либо целым числом, либо символи­ческой константой по табл. 2.5.

Табл. 2.5. Задание стиля линий в Turbo С

 

Символическая константа Значе­ние Описание стиля линии
SOLID_LINE DOTTED_LINE CENTER_LINE DASHED_LINE USERBIT_LINE Сплошная (непрерывная) линия Линия из точек .... Штрих-пунктирная линия -.-. Штриховая линия Определенная пользователем линия. Ее шаб­лон описывает поле upattern в структуре linesettingstype

 

Толщина линий в Turbo С может быть равна 1 или 3 пик­селам. Она задается либо целым числом, либо символической константой из табл. 2.6.

 

Табл. 2.6. Задание толщины линий в Turbo С

 

Символическая константа Значе­ние Толщина
NORM_WIDTH THICK_WIDTH Задает толщину линии 1 пиксел Задает толщину линии 3 пиксела

 

После инициализации системы графики Turbo С для стиля линии устанавливается непрерывная линия толщиной 1 пик­сел. Задание стиля линии выполняет функция setlinestyle().

 

#include <graphics.h>

Void setlinestyle (int linestyle, unsigned upattern, int thickness)

 

Устанавливает стиль "рисования" отрезков прямых линий и графических примитивов. Аргумент linestyle выбирает стиль линии в соответствии с табл. 2.5., а аргумент thickness - толщину линии по табл. 2.6.

Аргумент upattern используется только в том случае, когда задается отлич­ный от предопределенных стиль линии, т.е. если linestyle равен USERBIT_LINE (4). При этом 16 бит аргумента upattern задают маску линии (светимость 16 подряд расположенных пикселов линии). Если бит в upattern равен 1, пиксел выводится на экран текущим цветом, установленным функ­цией setcolor(). Определенный пользователем стиль линии действует только в случае, когда устанавливается толщина линии 1 пиксел (NORM_WIDTH). Для толщины 3 пиксела определенный пользователем стиль линии не действует.

 

При выводе отрезков прямых линий в графическом режи­ме система графики Turbo С позволяет задать дополнительно режим вывода линии. Существуют два различных режима, устанавливаемых функцией setwritemode().

#include <graphics.h>

Void setwritemode(int mode)

Устанавливает режим вывода отрезков прямых линий в значение, опреде­ляемое аргументом mode. Аргумент mode может принимать одно из двух зна­чений, описанных в <graphics.h>: COPY_PUT (0) - пикселы, лежащие на отрезке прямой линии, переопределяют пикселы на экране, и, таким образом, линия на экране имеет текущий цвет; XOR_PUT (1) - пикселы, образующие линию, имеют код цвета, образуемый операцией исключающего ИЛИ (XOR) кода текущего цвета и кода цвета пикселов на экране, через которые линия проходит. В частности, можно стереть выведенную линию с экрана, выполнив вывод линии еще раз.

 

Следующий параметр системы графики Turbo С - так на­зываемый коэффициент сжатия, или коэффициент пропор­циональности (aspect ratio). Он задает форму пиксела на эк­ране монитора. Для многих мониторов световое пятно, кото­рое соответствует пикселу, не является строго квадратным, а напоминает по форме эллипс, вытянутый вверх. Как следст­вие этого, линия, состоящая из одного и того же числа пиксе­лов, расположенная вертикально, выглядит на экране длин­нее, чем линия из того же числа пикселов, расположенная горизонтально. По этой же причине вывод прямоугольника, имеющего равные (в пикселах) горизонтальную и вертикальную стороны, не приводит к получению на экране квадрата. Система графики Turbo С учитывает коэффициент сжатия при выводе сложных графических примитивов - эллипсов, ок­ружностей, дуг, круговых секторов. Благодаря этому они по­являются на экране геометрически корректными. По умолча­нию после инициализации системы графики Turbo С автома­тически устанавливает коэффициент сжатия в соответствии с характеристиками аппаратуры видеосистемы. Для управле­ния коэффициентом сжатия в Turbo С предусмотрены две фун­кции: getaspectratio() и setaspectratio().

 

#include <graphics.h>

void getaspectratio (int *xasp, int *yasp)

 

Заполняет две переменные, описанные точкой вызова, значениями коэф­фициента сжатия для текущего видеорежима. Возвращаемые значения задают фактически физическую форму пиксела. Для размера пиксела по вертикали (значение, на которое указывает yasp), всегда возвращается 10 000. Если све­товое пятно на экране, соответствующее пикселу, является квадратным (как для адаптера VGA), то и значение "ширины" пиксела равно 10 000. Для других видеоадаптеров пиксел на экране имеет эллипсообразную форму с большой полуосью, сориентированной по вертикали. Для таких адаптеров в ячейке, на которую указывает xasp, возвращается значение, меньшее 10 000. Зная значе­ния геометрических размеров пиксела, можно так скорректировать параметры для функций вывода, чтобы получить на экране геометрически пропорцио­нальные фигуры, например квадраты. Отметим, что не следует корректиро­вать коэффициент сжатия для вывода окружностей, дуг или секторных диаграмм. Система графики Turbo С делает корректировку автоматически.

 

#include <graphics.h>



Просмотров 848

Эта страница нарушает авторские права




allrefrs.su - 2025 год. Все права принадлежат их авторам!