Автор работы: Пользователь скрыл имя, 16 Сентября 2009 в 13:41, Не определен
Учебник по программированию
Программирование
графики в среде
Thrbo Pascal 7.0.
Базовые процедуры и функции.
В библиотеке Graph вывод точки осуществляется процедурой
PutPixel(X, Y: integer; Color:word), где X, Y - экранные координаты расположения точки, Color - ее цвет (от 0 до 15).
Для определения цвета точки в конкретной позиции экрана служит функция GetPixel(X, Y: integer): word.
Из точек возможно построение линий. Это выполняет процедура
Line(X1,
Y1, X2, Y2), где X1, Y1 - координаты начала,
X2, Y2 - координаты конца линии.
Например:
Line(1, 1, 200, 1).
Для черчения линий применяются также еще две процедуры:
LineTo(X, Y) - строит линию из точки текущего положения указателя в точку с координатами X, Y;
LineRel(dX,
dY) - проводит линию от точки текущего
расположения указателя в точку СРx+dX,
CPy+dY, где CPx и CPy - текущие координаты СР.
Установка стиля (тонкие, широкие, штриховые пунктирные линии и т.д.) производится процедурой:
SetLineStyle (LineStyle: word; Pattern: word; Thickness: word). Параметр
LineStyle
устанавливает тип строки, который может
быть задан поименованной константой
или соответствующим ей цифровым значением
из Pattern - образец, Thickness
- толщину линии, определяемую константами
из Табл.2.
Таблица 1
Типы линий
|
Таблица 2
Толщина линии
КОНСТАНТА | ЗНАЧЕНИЕ | ОПИСАНИЕ |
NormWidth | 1 | Нормальная толщина |
ThickWidth | 3 | Жирная линия |
Процедура GetLineSettings (Var lineInfo: LineSettingsType) возвращает текущий стиль, образ и толщину линии, установленные SetLineStyle.
В видеобуфере (видеопамяти) для хранения информации о цвете пиксела отводится фиксированное количество битов памяти. Размер палитры и ее организация зависят от типа используемого видеоадаптера.
При использовании видеокарты EGA/VGA для установки цвета пиксела используется 6 битов.
Для формирования цвета используется система RrGgBb, где RGB - красный, зеленный и голубой цвета нормальной яркости, а rgb - те же цвета, но яркость их в два раза меньше.
Для EGA/VGA-карт драйвер EGAVGA..BGI устанавливает 54 цвета.
В
Таблице 4 приведены 16 основных цветов.
Таблица 3
Цвета видеокарты EGA/VGA
КОНСТАНТА | ЗНАЧЕНИЕ | КОД | ЦВЕТ |
EGABlack | 0 | 000000 | Черный |
EGABlue | 1 | 000001 | Синий |
EGAGreen | 2 | 000010 | Зеленый |
EGACyan | 3 | 000011 | Сине-зеленый |
EGARed | 4 | 000100 | Красный |
EGAMagenta | 5 | 000101 | Красно-синий |
EGABrown | 6 | 000110 | Коричневый |
EGALightGray | 7 | 000111 | Светло-серый |
EGADarkGray | 56 | 111000 | Темно-серый |
EGALightBlue | 57 | 111001 | Ярко-синий |
EGALightGreen | 58 | 111010 | Ярко-зеленый |
EGALightCyan | 59 | 111011 | Яркий сине-зеленый |
EGALightRed | 60 | 111100 | Ярко-красный |
EGALightMagenta | 61 | 111101 | Яркий красно-синий |
EGAYellow | 62 | 111110 | Желтый |
EGAWhite | 63 | 111111 | Белый |
До того момента, пока цвет не определен, для вывода используется цвет, имеющий максимальный номер палитры и фон, устанавливаемый по минимальному номеру.
Для EGA и VGA адаптеров в качестве фона
может быть задано любое целое число в
диапазоне 0-63.
Любой
цвет для создания фигур и вывода
текста может быть установлен с помощью
процедуры SetColor(Color: word).
Фон
задается процедурой SetBkColor(Color: word).
Для проверки максимально допустимого количества используемых программой цветов служит процедура GetMaxColor: word, возвращающая максимальное значение кода цвета в палитре минус 1.
Процедуры
GetColor: word - возвращают номера текущего цвета для выводимых элементов
GetBKColor: word возвращают номера текущего цвета для фона.
Для вывода в графическом режиме на экран текста используются процедуры: OutText(TextString: string), выводящая строку текста с текущего положения СР, и OutText(X, Y, Text), где X, Y - координаты точки начала вывода текста, Text - константа или переменная типа string.
Определенные проблемы создает
вывод численных данных, так как
в модуле Graph нет специально предназначенных
для этого процедур.
Установить нужный шрифт вывода можно процедурой
SetTextStyle(Font: word; Direction: word; CharSize: word),
где Font - выбранный шрифт, задаваемый константами из Табл. 5,
Direction - направление вывода (горизонтальное или вертикальное), задаваемое константами из Табл.6,
CharSize - размер
выводимых символов.
Таблица 4
Типы шрифтов
|
Таблица 5
Ориентация текста
КОНСТАНТА | ЗНАЧЕНИЕ | ОПИСАНИЕ |
HorizDir | 0 | Слева направо |
VertDir | 1 | Снизу вверх |
Для
выравнивания текста необходимо использовать
процедуру SetTextJastify (Horiz, Vert: word). Выравнивание
относительно СР выполняется по вертикали
и по горизонтали с помощью параметров
Horiz и Vert (Табл.7).
Таблица 6
Типы линий
|
Пример:
В следующем примере приведена программа, выводящая заставку. Заставка представляет собой фразу "Демонстрация заставки", напечатанную коричневыми буквами обычного размера и синими буквами увеличенного размера; по периметру экрана нарисованы три разноцветных прямоугольника линиями различной толщины и стиля.
Program Zast;
Uses Graph, Crt;
Var DriverVar, ModeVar :integer;
xm,ym :integer;
c
Begin
{Инициализация графического режима }
DriverVar:=Detect;
InitGraph(DriverVar, Modevar, ‘ ’);
xm:=GetMaxX; ym:=GetMaxY;
{ Вывод прямоугольника,
нарисованного зеленой
SetColor(2); SetLineStyle(0,0,2);
Rectangle(0,0,xm,ym);
{ Вывод прямоугольника,
нарисованного голубой
SetColor(3); SetLineStyle(0,0,1);
Rectangle(20,20,xm-20,ym-
{ Вывод прямоугольника,
нарисованного красной
SetColor(4); SetLineStyle(3,0,1);
Rectangle(40,40,xm-40,ym-
{ Вывод синего текста с увеличенным размером букв }
SetColor(1); SetTextStyle(0,0,2);
OutTextXY(100,60,'
{ Вывод коричневого текста с обычным размером букв }
SetColor(6); SetTextStyle(0,0,1);
OutTextXY(150,100,'
{ Ожидание нажатия клавиши }
c:=readkey;
{ Закрытие графического режима }
CloseGraph;
End.
Библиотека Graph содержит ряд процедур, которые на основе задаваемых параметров формируют различные геометрические фигуры.
Рассмотрим некоторые из них:
Для построения прямоугольных фигур существуют несколько процедур.
Rectangle (X1, Y1, X2, Y2: integer) - процедура вычерчивания одномерного прямоугольника,
где
X1, Y1 - координаты левого верхнего угла,
X2, Y2 - координаты правого нижнего угла
прямоугольника.
Более удобные для восприятия закрашенные прямоугольники можно строить с использованием процедуры:
Bar(x1, y1, x2, y2: integer) - процедура рисует закрашенный столбец.
Цвет закраски
устанавливается с помощью SetF
Процедура Bar3D(x1, y1, x2, y2: integer; Depth: word; Top: boolean)