
- •5.2. Модуль graph
- •5.2.1. Переход в графический режим и возврат в текстовый.
- •5.2.2. Инициализация графического режима
- •InitGraph (Driver, Mode, Path);
- •5.2.3. Экран и окно в графическом режиме
- •5.2.4. Рисование линий и точек.
- •5.2.5. Рисование многоугольников
- •5.2.6. Рисование дуг, окружностей, эллипсов
- •5.2.7. Краски, палитры, заполнения
- •5.2.8 Вывод текста
- •Задачи для самостоятельного решения.
- •Литература
5.2.5. Рисование многоугольников
Процедура Rectangle. Процедура Rectangle вычерчивает прямоугольник с указанными координатами .
Формат вызова процедуры в программе:
Rectangle (X1, Y1, X2, Y2);
Переменные X1, Y1, X2, Y2 типа integer определяют координаты левого верхнего и правого нижнего углов диагонали прямоугольника. Прямоугольник вычерчивается с использованием текущего цвета и текущего стиля линий.
Процедура DrawPoly. Процедура DrawPoly вычерчивает произвольную ломаную линию, заданную координатами точек излома.
Формат вызова процедуры в программе:
DrawPoly (N, Points);
Переменная N типа Word определяет количество точек излома, включая обе крайние точки; переменная Points типа PointType, содержит координаты точек излома. Координаты точек излома задаются парой значений типа Word: первое определяет горизонтальную, второе - вертикальную координаты. Для них можно использовать следующий, определенный в модуле тип:
type PointType = record
x, y: Word
end;
При вычерчивании используется текущий цвет и текущий стиль линий.
5.2.6. Рисование дуг, окружностей, эллипсов
Процедура Circle. Процедура Circle вычерчивает окружность.
Формат вызова процедуры в программе:
Circle (X, Y, R);
Переменные X, Y типа integer – координаты центра; переменная R типа Word – радиус в пикселях. Окружность выводится текущим цветом. Толщина линии устанавливается текущим стилем, вид линии всегда SolidLn. Процедура вычерчивает правильную окружность с учетом изменения линейного размера радиуса в зависимости от его направления относительно сторон графического экрана, т. е. с учетом коэффициента GetAspectRatio. В связи с этим параметр R определяет количество пикселей в горизонтальном направлении.
Процедура Arc. Процедура Arc чертит дугу окружности.
Формат вызова процедуры в программе:
Arc (X, Y, BegA, EndA, R);
Переменные X и Y типа integer – координаты центра; переменная R типа Word – радиус в пикселях; переменные BegA, EndA типа Word определяют начальный и конечный углы дуги. Углы отсчитываются против часовой стрелки и указываются в градусах. При вычерчивании дуги окружности используются те же соглашения относительно линий и радиуса, что и для процедуры Circle.
Процедура Ellipse. Процедура Ellipse вычерчивает эллипсную дугу.
Формат вызова процедуры в программе:
Ellipse(X, Y, BegA, EndA, RX, RY);
Переменные X и Y типа integer – координаты центра; переменные BegA, EndA типа Word определяют начальный и конечный углы дуги; переменные RX, RY типа Word - горизонтальные и вертикальные радиусы эллипса в пикселях. Углы отсчитываются против часовой стрелки и указываются в градусах. При вычерчивании дуги эллипса используются те же соглашения относительно линий и радиуса, что и для процедуры Circle.
5.2.7. Краски, палитры, заполнения
Процедура SetColor. Процедура SetColor устанавливает текущий цвет для выводимых линий и символов.
Формат вызова процедуры в программе:
SetColor(Color);
Переменная Color типа Word - код цвета символов и линий из цветовой шкалы на стр.76 или установленной палитры.
Функция GetMaxColor. Функция GetMaxColor возвращает значение типа Word, содержащее максимальный доступный код цвета, который можно использовать для обращения к SetColor.
Формат обращения к функции в программе:
G:=GetMaxColor;
Переменная G типа Word.
Процедура SetBkColor. Процедура SetBkColor устанавливает цвет фона.
Формат вызова процедуры в программе:
SetBkColor (Color);
Переменная Color типа Word - код цвета фона из цветовой шкалы на стр.76 или установленной палитры. В отличие от текстового режима, в котором цвет фона может быть только темного оттенка, в графическом режиме он может быть любым.
Процедура SetPalette. Процедура SetPalette заменяет один из цветов палитры на новый цвет.
Формат вызова процедуры в программе:
SetPalette(N, Color);
Здесь переменная N типа Word - номер цвета в палитре; переменная Color типа ShortInt - номер вновь устанавливаемого цвета. Данная процедура может работать только с адаптерами типа VGA, EGA.
Процедура GetPalette. Процедура GetPalette возвращает размер и цвета текущей палитры.
Формат вызова процедуры в программе:
GetPalette(PaletteInfo);
Здесь PaletteInfo - переменная типа PaletteType, возвращающая размер и цвета палитры.
В модуле Graph определена константа Const MaxCollors=15; и тип Type
PaletteType = Record
Size : Word; {количество цветов в палитре}
Colors : Array [0..MaxCollors] of ShortInt
End;
Процедура SetAllPalette. Процедура SetAllPalette изменяет одновременно несколько цветов палитры.
Формат вызова процедуры в программе:
SetAllPalette(Palette);
Параметр Palette в заголовке процедуры описан как нетипизированный параметр. Первый байт этого параметра должен содержать длину палитры, остальные байты - номера вновь устанавливаемых цветов в диапазоне от -1 до MaxColors. Код -1 означает, что соответствующий цвет исходной палитры не меняется.
Функция GetPaletteSize. Функция GetPaletteSize возвращает значение типа Integer, содержащее размер палитры.
Формат обращения к функции в программе:
P:= GetPaletteSize;
Переменная P типа Integer.
Процедура GetDefaultPalette. Процедура GetDefaltPalette возвращает структуру палитры, устанавливаемую по умолчанию.
Формат вызова процедуры в программе:
GetDefaltPalette (Palette);
Здесь Palette переменная типа PaletteType, которой возвращаются размеры и цвета палитры.
Процедура SetFillStyle. Процедура SetFillStyle устанавливает стиль (тип и цвет) заполнения.
Формат вызова процедуры в программе:
SetFillStyle (Fill, Color: Word);
Здесь переменная Fill - тип заполнения, переменная Color - цвет заполнения. Переменные Fill и Color типа Word.
С помощью выбранного стиля заполнения можно покрывать какие - либо фрагменты изображения периодически повторяющимся узором. Для указания типа заполнения используются следующие предварительно определенные константы:
const
EmptyFill = 0; {Заполнение фоном (узор отсутствует)}
SolidFill = 1; {Сплошное заполнение}
LineFill = 2; {Заполнение ------------}
LtSlashFill = 3; {Заполнние ///////////////////}
SlashFill = 4; {Заполнение утолщенными ////}
BkSlashFill = 5; {Заполнение утолщенными \\\\}
LtBkSlashFill = 6; {Заполнение \\\\\\\\\\\\\\\\\\}
HatchFill = 7; {Заполнение + + + + + +}
XHatchFill = 8; {Заполнение xxxxxxxxxx}
InterleaveFill = 9; {Заполнение в прямоугольную клеточку}
WideDotFill =10; {Заполнение редкими точками}
CloseDotFill =11; {Заполнение частыми точками}
UserFill =12; {Узор определяется пользователем}
Процедура SetFillPattern. Процедура SetFillPattern устанавливает образец рисунка и цвет штриховки.
Формат вызова процедуры в программе:
SetFillPattern(Pattern; Color);
Переменная Pattern типа FillPatternType, переменная Color типа Word - код цвета штриховки. Образец рисунка задается в виде матрицы из 8 на 8 пикселей и может быть представлен массивом из 8 байт следующего типа:
Type FillPatternType = array [1..8] of Byte;
Каждый разряд любого из этих байтов управляет светимостью пикселя.
Процедура GetFillPattern. Процедура GetFillPattern возвращает образец заполнения, установленный процедурой, описанной выше.
Формат вызова процедуры в программе:
GetFillPattern(Pattern);
Переменная Pattern типа FillPatternType.
Процедура GetFillSettings. Процедура GetFillSettings возвращает текущий стиль заполнения.
Формат вызова процедуры в программе:
GetFillSettings(PattInfo);
Переменная PattInfo типа FillSettingsType. В модуле Graph определен тип:
Type FillSettingsType = record
Pattern: Word;
Color: Word
end;
Поля Pattern и Color в этой записи имеют то же назначение, что и аналогичные параметры при обращении к процедуре SetFillStyle.
Процедура FloodFill. Процедура FloodFill заполняет произвольную замкнутую фигуру, используя текущий стиль заполнения.
Формат вызова процедуры в программе:
FloodFill(X, Y, Border);
Переменные X, Y типа Integer - координаты любой точки внутри замкнутой фигуры; переменная Border типа Word - цвет граничной линии. Если фигура не замкнута, заполнение разольется по всему экрану.
Процедура Bar. Процедура Bar заполняет прямоугольную область экрана текущим стилем и цветом.
Формат вызова процедуры в программе:
Bar(X1, Y1, X2, Y2);
Переменные X1, Y1, X2, Y2 типа Integer - координаты концов диагонали прямоугольника.
Процедура Bar3D. Процедура Bar3D вычерчивает трехмерное изображение параллелепипеда и закрашивает его переднюю грань текущим стилем и цветом.
Формат вызова процедуры в программе:
Bar3D(X1, Y1, X2, Y2, Depth, Top);
Переменные X1, Y1, X2, Y2 типа Integer - координаты концов диагонали прямоугольника. Переменная Depth типа Integer - третье измерение трехмерного изображения в пикселях; переменная Top типа Boolean - способ изображения верхней грани. Если параметр Top имеет значение True, верхняя грань параллелепипеда вычерчивается, в противном случае не вычерчивается.
Процедура FillPoly. Процедура FillPoly обводит линией и закрашивает замкнутый многоугольник.
Формат вызова процедуры в программе:
FillPoly(N, Coords);
Переменная N типа Word - количество вершин замкнутого мноугольника; переменная Coords типа PointType содержит координаты вершин.
Координаты вершин задаются парой значений типа Integer: первое определяет горизонтальную, второе - вертикальную координаты. Для них можно использовать следующий, определенный в модуле тип:
type
PointType = record
X, Y: Integer;
end;
Стиль и цвет линии контура задаются процедурами SetLineStyle и SetColor, тип и цвет заливки - процедурой SetFillStyle.
Процедура FillEllipse. Процедура FillEllipse обводит линией и заполняет эллипс.
Формат вызова процедуры в программе:
FillEllipse(X, Y, RX, RY);
Переменные X,Y типа Integer - координаты центра эллипса, переменные RX, RY типа Word - горизонтальный и вертикальный радиусы эллипса в пикселях. Стиль и цвет линии контура эллипса задаются процедурами SetLineStyle и SetColor, тип и цвет заливки - процедурой SetFillStyle.
Процедура Sector. Процедура Sector вычерчивает и заполняет эллипсный сектор.
Формат вызова процедуры в программе:
Sector(X, Y, BegA, EndA, RX, RY);
Переменные X,Y типа Integer - координаты центра эллипса, переменные BegA, EndA типа Word определяют начальный и конечный углы дуги, переменные RX, RY типа Word - горизонтальный и вертикальный радиусы эллипса в пикселях.
Процедура PieSlice. Процедура PieSlice вычерчивает и заполняет сектор окружности.
Формат вызова процедуры в программе:
PieSlice(X, Y, BegA, EndA, R);
В отличие от процедуры Sector указывается всего один горизонтальный радиус R, остальные параметры аналогичны параметрам процедуры Sector.