46019 (665326), страница 34

Файл №665326 46019 (Turbo C++ Programer`s guide) 34 страница46019 (665326) страница 342016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

_graphfreemem, вы можете получить предупреждение "duplicate

symbols" ("повторение символических имен"). Это предупреждение можно игнорировать.

Черчение и заполнение

Ниже приводится краткий обзор функций черчения и заполнения:

Черчение:

arc Чертит дугу окружности.

circle Чертит окружность.

drawpoly Чертит контур многоугольника.

ellipse Чертит эллиптическую дугу.

getarccoords Возврашает координаты последнего вызова

arc или ellipse.

getaspectratio Возвращает коэффициент сжатия для текуще

го графического режима.

getlinesettings Возвращает текущий стиль линии, шаблон

линии и толщину линии.

line Чертит линию из (x0,y0) в (x1,y1).

linerel Чертит линию в точку, задаваемую относитель

ным расстоянием от текущей позиции (CP).

lineto Чертит линию из текущей позиции (CP) в (x,y).

moveto Перемещает текущую позицию (CP) в (x,y).

moverel Перемещает текущую позицию (CP) на относитель

ное расстояние.

rectangle Рисует прямоугольник.

setaspectratio Изменяет коэффициент сжатия по умолчанию.

setlinestyle Устанавливает ширину и стиль текущей ли

нии.

Заполнение:

bar Чертит и заполняет столбик.

bar3d Чертит и заполняет трехмерный столбик.

fillellipse Чертит и заполняет эллипс.

fillpoly Чертит и заполняет многоугольник.

getfillpattern Возвращает определяемый пользователем

шаблон заполнения.

getfillsettings Возвращает информацию о текущкм шаблоне

и цвете заполнения.

pieslice Чертит и заполняет сектор окружности.

sector Чертит и заполняет эллиптический сектор.

setfillpattern Выбирает шаблон заполнения, определяемый

пользвателем.

setfillstyle Устанавливает шаблон и цвет заполнения.

При помощи функций черчения и раскрашивания Turbo C++ вы можете вычерчивать цветные линии, дуги, окружности, эллипсы, прямоугольники, секторы, дву- и трехмерные столбики, многоугольники, а такжеразличные правильные или неправильные формы, являющиеся комбинациями перечисленныхграфических примитивов. Ограниченную форму изнутри или снаружи можно заполнить одним из 11 предопределенных шаблонов, либо шаблоном, определенным пользователем. Можнотакже управлять толщиной и стилем линии вычерчивания, а также местоположением текущей позиции (CP).

Линии и незаполненные формы вычерчиваются при помощи функций arc, circle, drawpoly, ellipse, line, linerel, lineto и rectangle. Затемможно заполнить эти формы с помощью floodfil, либо можно объединить вычерчивание/заполнение в одном шаге при помощи функций bar, bar3d, fillellipse, fillpoly, piesliceи sector. Функция setlinestyle позволяет задать стиль линий (играничных линий форм): толстая или тонкая, сплошная, пунктир и т.д., либоможно задать ваш собственный шаблондля вычерчивания линии. Можно выбрать предопределенный шаблон заполнения при помощи функции setfillstyle,либо определить собственный шаблон заполнения в setfill psttern. Функция moveto позволяетпереместить CP в желаемую позицию, афункция moverel позволяет сдвинуть ее на желаемую величину смещения.

Выяснить текущий стиль и толщину линии позволяет функция getlinesettings. Информацию о текущем шаблоне заполнения и цвете заполнителя можно получить через функцию getfillsettings; определяемый пользователем шаблон заполнения можно получить при помощи getfillpattern.

Получитьсведения о коэффициенте сжатия (коэффициенте масштабирования, применяемом графической системой для того, чтобы окружности выглядели круглыми) позволяет функция getaspectratio, а получить координаты последнейнарисованной дуги или эллипса - функция getarccoords. Если окружности не получаются идеально круглыми, можно исправить дело при помощи функции setaspectratio.

Манипулирование экраном и графическими окнами

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

Манипуляции с экраном:

cleardevice Очищает экран (активную страницу).

setactivepage Устанавливает активную страницу для

графического вывода

setvisualpage Устанавливает номер визуальной графи

ческой cтраницы.

Манипуляции с графическими окнами:

clearviewport Очищает текущее графическое окно.

getviewsettings Возвращает информацию о текущем графи

ческом окне.

setviewport Устанавливает текущее графическое окно

для направления на него графического

вывода.

Манипуляции с битовыми образами:

getimage Записывает битовый образ в заданный участок

памяти.

imagesize Возвращает число байт, требуемых для хранения

некоторой прямоугольной области экрана.

putimage Помещает на экран ранее записанный в память

битовый образ.

Манипуляции с пикселями:

getpixel Принимает цвет пикселя в (x,y).

putpixel Помещает пиксель на экран в (x,y).

Помимо черчения и закрашивания, графическая библиотека предлягает несколько функций для манипулирования экраном, графическими окнами,образами и пикселями. Вызвав cleardevice, можно сразу очистить весь экран; данная подпрограмма стирает экран и помещает CP в графическое окно, но при этом оставляет действующими все прочие установки графической системы (стили линии, заполнения и текста; раскраска, установки графического окна и т.д.).

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

Когда ваш экран находится в графическомрежиме, вы можете определить графическое окно (или прямоугольное "виртуальное окно") на экране с помощью функции setviewport. Позиция графического окна задается в абсолютных экранных координатах; кроме того, задается активное илинеактивное состояние функции"отсечки". Очистка графического окна выполняется при помощи clearviewport. Для того, чтобы получить абсолютные экранные координаты и статус "отсечки", следует воспользоваться функцией getviewsettings.

Можно взять часть экранного образа при помощи getimage, вызвать imagesize для вычисления числа байтов для хранения этого образа в памяти, а затем вернуть образ на экран (в любую желаемую позицию) с помощью функции putimage.

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

Можно также манипулировать цветомотдельных пикселей благодаря функциям getpixel (возвращающей цвет данного пикселя) и putpixel (которая отображает данный пиксель на экране заданным цветом).

Текстовый вывод в графическом режиме

Ниже приводится краткое описание функций текстового вывода в графическом режиме:

gettextsettings Возвращает текущий текстовый шрифт,

направление, размер и выравнивание.

outtext Посылает строку на экран в текущую позицию

(CP).

outtextxy Посылает текст на экран в заданную позицию.

registerbgifont Регистрирует прикомпонуемый или

определяемый пользователем шрифт.

settextjustify Устанавливает значения выравнивания

текста, используемые outtext и outtextxy.

settextstyle Устанавливает шрифт, стиль и коэффициент увеличения текущего текста.

setusercharsize Устанавливает соотношение между высотой и шириной штриховых шрифтов.

textheight Возвращает высоту строки в пикселях.

textwidth Возвращает ширину строки в пикселях.

Графическая библиотека включает в себя матричный шрифт 8х8 и несколько штриховых шрифтовдля вывода текста вграфическом режиме.

- В матричном битовом шрифте каждый символ определяется как матрица пикселей.

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

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

В графике текст выводится функциями outtext или outtextxy, а управление его выравниванием (относительно CP) выполняет функция settextjustify. Вы должны выбрать символьныйшрифт,направление его размещения (горизонтальное или вертикальное) и размер (масштаб) при помощи функции settextstyle. Узнать текущие установки вывода текстов можно при помощи функции gettextsettings, которая возвращаеттекущий текстовый шрифыт, выравнивание, увеличение и направление в структуре textsettings. setusercharsize позволяет модифицировать ширину и высоту штриховых шрифтов.

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

По умолчанию битовый 8х8 матричный шрифт является встроенным в графический пакет и поэтому всегда доступен во время выполнения. Штриховые шрифты все хранятся в отдельных .CHR-файлах; они могут загружаться во время выполнения или преобразовываться в .OBJ-файлы (при помощи утилиты BGIOBJ) и затем компоноваться с вашим .EXE-файлом.

Обычно подпрограмма settextstyle загружает файл шрифта, распределяя память для него и затем загружая с диска соответствующий .CHR-файл. В качестве альтернативы данной схеме динамической загрузки вы можете скомпоновать файл шрифта (или несколько таких файлов) непосредственно свыполняемым файлом программы. Для этого сначала требуется преобразовать .CHR-файл в .OBJ-файл (спомощью утилиты BGIOBJ - прочтите об этом в файле документации UTIL.DOC, который находится на дистрибутивном диске), а затем поместить в исходную программу вызовы registerbgifont (перед вызовом settextstyle) для того, чтобы зарегистрировать данный символьный шрифт(ы). При построении программы необходимо скомпоновать полученные .OBJ -файлы для всех зарегистрированных вами штриховых шрифтов.

Примечание

Использование registerbgifont относитсяк сложным методам программирования и не рекомендуется начинающим программистам. Более подробно эта функция описана в UTIL.DOC, который находится на дистрибутивном диске.

Управление цветом

Ниже приводитсякраткое описание функция для управления цветом изображений:

Функции получения информации о цвете:

getbcolor Возврашает текущий цвет фона.

getcolor Возвращает текущий цвет вычерчивания.

getdefaultpalette Возвращает структуру определения палитры.

getmaxcolor Возвращает максимальное значение цвета,

доступное в текущем графическом режиме.

getpalette Возвращает текущую палитру и ее размер.

getpalettesize Возвращает размер просмотровой таблицы

палитры.

Функции установки одного или более цветов:

setallpalette Изменяет все цвета палитры, как задано.

setbkcolor Устанавливает текущий цвет фона

setcolor Устанавливает текущий цвет вычерчивания.

setpalette Изменяет один из цветов палитры, как

указано ее аргументами.

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

Пиксели и палитры

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

Такая схема косвенных обращений имеет множество следствий. Хотя аппаратное обеспечение может позволять отображение множества цветов, одновременно на экране может находиться только некоторое их подмножество. Количествоодновременно находящихся на экране цветов равно числу элементов палитры (размеру палитры). Например, EGA позволяет наличие 64 цветов, но лишь 16 из них может находиться на экране сразу; таким образом, размер палитрыEGA равен 16.

Размер палитры определяет диапазон значений, которые может принимать пиксель, от 0 до (размер-1). Функцияgetmaxcolor возвращает максимальное допустимое значение пикселя (размер-1) для текущего графического драйвера и режима.

При обсужденииграфических функций Turbo C++ мы часто используем термин "цвет", например текущий цвет вычерчивания, цвет заполнения и цвет пикселя. Фактическицветоммы здесь называем значение пикселя: это некоторый индекс в палитре. Только палитра реально определяет фактический цвет на экране.Манипулируя палитрой, выможетеизменять фактические цвета, выводимые на дисплей, даже хотя значения пикселей (цвета вычерчивания, заполнения и т.д.) могут не изменяться.

Цвет фона и вычерчивания

Цвет фона всегда соответствует значению пикселя 0. Когда выполняется очистка области экрана в цвет фона, это означает просто установку всех пикселей этой области в значение

0.

Цветомвычерчивания называется значение,в которое устанавливаются пиксели при вычерчивании линий. Цвет вычерчивания устанавливается функцией setcolor(n), где n есть допустимое для текущей палитры значение пикселя.

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

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

Список файлов реферата

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