Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
141.82 Кб
Скачать

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]