Смекни!
smekni.com

Графическое программирование на Ms Fortran (стр. 4 из 4)

i2=rectangle($GBORDER,1,Int(kr*ny),Int(kc*nx),ny-1)

end do

end do

11 format('(',i1,',',i1,') ')

end

Для переноса текста в пределах окна используется функция WrapOn.

Пример:

dum = WrapOn($gwrapon), где:

$gwrapon – символическая константа, указывающая на перенос строки по границе окна

$gwrapoff – обрывание строки по границе окна.

Функция не оказывает влияние на вывод текста шрифтом (с помощью outgtext).

Вставка рисунка из файла

Вставка рисунка формата pcx в любую позицию экрана возможно с использованием файлов библиотек gx_cl.lib и pcx_cl.lib, gxint.for, pcxint.for. Вставляемый рисунок должен иметь формат pcx.

! File: ins_pic.for

! Программа демонстрации вывода рисунка из файла на экран

! ?? Закомментировать строки 156,157 файла gxlib.for

! Компиляция производится с подключением библиотек gx_cl.lib, pcx_cl.lib

! (fl ins_pic.for gx_cl.lib pcx_cl.lib)

$DEBUG ! Производит дополнительные проверки при компиляции

$STORAGE:2 ! Переменные и константы целого типа:2-х байтовые

$INCLUDE: 'gxint.for' ! Подключение библиотечных файлов

$INCLUDE: 'pcxint.for'

$include: 'fgraph.fi' ! Включение интерфейсов графических ф-ций

program InsertPcxImage! Объявление головной программы

implicit NONE ! Запретить неявное объявление типов

include 'fgraph.fd' ! Объявление типов графических функций

include 'gxlib.for'

include 'pcxlib.for'

integer*2 i2 ! Фиктивная переменная

integer*2 pcxType

character*20 pcxImage

parameter (pcxType=gxVGA_12) ! см. стр.178 файл gxlib.for

! parameter (pcxType=gxVGA_11) ! см. стр.178 файл gxlib.for

parameter (pcxImage='bpaexp.pcx'C) ! Имя файла рисунка

record /videoconfig/ vc

i2 = gxSetDisplay(pcxType) ! Определение используемого типа монитора и режима

i2 = gxSetMode(gxGRAPHICS)

i2=setvideomode($MAXRESMODE) ! Установить видеорежим с max разрешением

call getvideoconfig(vc)

i2 = pcxFileDisplay(pcxImage,100,100,0) ! Вставка рисунка

read*

i2=setvideomode($DEFAULTMODE) ! Установить предыдущий видеорежим

end

Формат файла PCX

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

Заголовок несколько изменен в новой версии пакета. В него добавлены три новых поля: PALINFO, SHRES и SVRES. Поле palinfo определяет, является ли изображение цветным (palinfo=1) или в оттенках серого (palinfo=2). Когда программа PC Paintbrush загружает изображение, и она видит, что это серое изображение, программа устанавливает палитру как свою собственную внутреннюю серую палитру. Пакет не обрабатывает палитры подобным способом (текущая палитра ВСЕГДА хранится ВМЕСТЕ с изображением), поэтому он игнорирует это поле. Однако, в целях совместимости, пакет устанавливает флаг palinfo для обозначения цвета.

Два других поля, shres и svres, предназначены для хранения разрешения развертки (сканнера). Они были созданы для того, чтобы не путать замену разрешения экрана на разрешение развертки (сканнера) в полях hres и vres. Прежние пользователи заметят, что это было бы показано как 'Разрешение дисплея: 75 х 75' при использовании утилиты pcxHdr. Теперь поля hres и vres будут содержать экранное разрешение создающего устройства, во всех будущих версиях Paintbrush (1.62 и выше).

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

Некоторые относящиеся к графике термины

Bitmap‑Способ кодирования изображения пиксел за пикселом.

Buffer‑буфер. Область временного хранения данных, часто используется для компенсации разницы в скорости работы различных компонентов системы. Часто, в качестве буфера используется дополнительная память, зарезервированная для временного хранения данных, которые передаются между центральным процессором системы и периферией (такой, как винчестер, принтер или видеоадаптером). Особенно полезен буфер для компенсации разницы в уровнях интенсивности потоков данных, для обеспечения места размещения данных, когда процессы асинхронны (например, данные переданные в контроллер видеоплаты должны дождаться, когда графический процессор закончит выполнение текущей операции, и считает новую порцию информации), и для сохранения данных в неизменном виде (как буфер для видеокадра). Некоторые буферы являются частью адресуемой памяти центрального процессора системы, другие буферы памяти являются частью периферийных устройств.

Gamma Correction‑перед выводом на дисплей линейные данные RGB должны быть обработаны (скорректированы) для компенсации гаммы (нелинейной составляющей) дисплея.

Pixel‑пиксель. Комбинированный термин, обозначающий элемент изображения, являющийся наименьшим элементом экрана монитора. Другое название - pel. Изображение на экране состоят из сотен тысяч пикселей, объединенных для формирования изображения. Пиксель является минимальным сегментом растровой строки, которая дискретно управляется системой, образующей изображение. С другой стороны, это координата, используемая для определения горизонтальной пространственной позиции пикселя в пределах изображения. Пиксели на мониторе - это светящиеся точки яркого фосфора, являющиеся минимальным элементом цифрового изображения. Размер пикселя не может быть меньше точки, которую монитор может образовать. На цветном мониторе точки состоят из групп триад. Триады формируются тремя различными фосфорами: красным, зеленым и синим. Фосфоры располагаются вдоль сторон друг друга. Пиксели могут отличаться размерами и формой, в зависимости от монитора и графического режима. Количество точек на экране определяются физическим соотношением ширины к высоте трубки.

RGB‑система цветообразования, в которой конечный цвет получается за счет смешения, с различной интенсивностью, трех основных цветов: красного (Red), зеленого (Green) и синего (Blue). Самое известное устройство, которое использует систему RGB, это цветной монитор.

Resolution‑разрешение. Количество пикселей представленное битами в видеопамяти, или адресуемое разрешение. Видеопамять может организовываться соотношением пикселов (битов) по оси x (пикселы на строке) к числу пикселов по оси y (столбцы) и к размеру отводимой памяти на представление глубины цвета. Стандартная видеопамять VGA 640 пикселов на 480 пикселов и, обычно, с глубиной представления цвета 8 бит. Чем выше разрешение, тем более детально изображение, тем больше нужно хранить о нем информации. Но не вся хранимая информация может быть отображена на дисплее.

Texture‑двумерное изображение хранящееся в памяти компьютера или графического акселератора в одном из пиксельных форматов. В случае хранения в сжатом виде на дисках компьютера, текстура может представлят собой обычный бит-мап который мы привыкли видеть в форматах bmp, jpg, gif и т.д. Перед использованием, текстура разворачивается в памяти и может занимать объем в десятки раз больше первоначального размера. Существует порядка двух десятков более или менее стандартизированных пиксельных форматов текстур.