logo search
Шпора по информатике / 002

11.1 Графические программы

В предыдущих лекциях с помощью оператора cout мы выводили на экран

значения переменных или массивов в виде чисел, а также пояснения к ним в

виде текстов. Такой режим вывода на экран называется текстовым. Числа и

тексты состоят из символов и каждый символ изображается на экране

совокупностью элементарных точек, называемых пикселами.

Пиксел - это примитив для любого изображения. Экраны современных

дорогих компьютеров имеют примерно 2000 х 1000 пикселов и каждому может

соответствовать один из 256 или более цветов. Графический режим позволяет

работать как с отдельными пикселами, так и с их совокупностями, например,

символами или рисунками, в отличие от текстового режима, допускающего

только работу с символами.

Оценим количество байтов для хранения информации в виде символов и

пикселов. Пусть на экране размещается 40 строк по 80 символов и код каждого

символа занимает один байт. Получаем 40 х 80 х 1 = 3200 байтов, т.е. примерно 3Кб.

В случае изображения будем считать, что для кода цвета используется один байт

(256 цветов). Получаем для всего экрана 2000 х 1000 х 1 = 2 млн. байтов, т.е.

примерно 2Мб для пиксельного изображения вместо 3Кб для хранения текста.

Возможны два способа хранения графических изображений:

в виде последовательности байтов с информацией о цвете каждого пиксела или

в виде программы для генерирования изображения. Это аналогично, например,

двум способам хранения большого массива чисел: в виде файла с этими числами

или в виде программы для вычисления этих чисел. Если массив большой,

а вычисления простые, то второй способ эффективнее.

Представление изображения в виде совокупности пикселов, т.е. в виде больших

массивов чисел для их характеристик, составляет суть растровой графики.

Изображение в растровой графике - это как бы мозаичное панно из пикселов. Эта

графика широко применяется при работе с фотографиями и рисунками.

Примеры графических растровых редакторов : MS Paint, Adobe Phonoshop,

Corel PHOTO-PAINT.

Для дизайна, конструирования и проектирования применяется другой вид

графики - векторная графика. Основу векторных изображений составляют

разнообразные линии и кривые, генерируемые специальными подпрограммами.

При этом изображение представляется набором параметров для этих подпрограмм,

и такое представление компактнее, чем хранение в виде совокупности пикселов.

Примеры графических растровых редакторов : AutoCAD, CorelDRAW,

Corel Xara, Adobe Illustrator. Отметим, что система MathCAD использует

векторную графику.

Изображение в виде последовательности байтов для всего экрана имеется в

видеопамяти. Видеопамять - это память специальной структуры, содержимое

которой отображается на экране монитора. В видеопамяти каждому пикселу -

с первого до последнего - соответствует код его цвета по аналогии с кодом

для каждого символа. Обычно цвету соответствует один или несколько байтов.

Выполненная выше оценка показывает, что хранение информации для пикселов

всего экрана требует несколько мегабайтов. Это очень большой

объем информации и поэтому в файлах хранится не копия видеопамяти, а

преобразованное и сжатое представление изображения, что аналогично

представлению текста в файле. Различные алгоритмы преобразования и сжатия

дают различные форматы для хранения графических изображений, например,

известные форматы PIC, GIF, PS, JPEG и другие. Форматы для хранения

изображений не будут изучаться в лекциях, т.к. мы будем создавать и хранить

изображения в виде графических программ, а не в виде файлов с картинками.

Для сравнения графических программ с обычными рассмотрим задачу

построения графика на экране и две программы для ее решения. В первой программе

график будет строиться из символов и этот график назовем символьным. Во второй -

графической программе - изображение будет построено из пикселов.

Для работы с пикселами нужен стандартный набор графических подпрограмм.

В обоих языках Си и С++ стандартные графические средства отсутствуют и

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

Мы будем использовать графическую библиотеку фирмы Borland для языка Си,

которая обычно используется при обучении. Для этой библиотеки нужен

заголовочный файл graphics.h. Сами функции для графики хранятся

в машинных кодах в объектном файле

\LIB\graphics.lib

и подключаются на этапе компоновки.

Всего в библиотеке graphics.lib около 100 функций [П1, с.509], [Б1, с.153].

Их можно вызывать в тексте программы как обычные функции.

Для работы с графикой нужен также драйвер из папки BGI, например,

\BGI\egavga.bgi

и шрифты из той же папки. Последние имеют расширение .chr