Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование - 12 - Графика.doc
Скачиваний:
10
Добавлен:
09.03.2016
Размер:
410.11 Кб
Скачать

12.4 Работа с точками

12.4.1 Процедура работы с точками

Procedure ...

PutPixel ( x, y : Integer ; Color : Word ) ;

закрашивает пиксель с заданными координатами заданным цветом.

( x,y) —

координаты пикселя (задаются относительно левого верхнего угла окна или — если окно не установлено — относительно левого верхнего угла экрана).

Color

цвет, в который закрашивается пиксель.

12.4.2 Функции работы с точками

Function ...

GetMaxX : Integer;

возвращает максимальную координату X(по горизонтали) для текущего драйвера в текущем режиме.

GetMaxY : Integer;

возвращает максимальную координату Y(по вертикали) для текущего драйвера в текущем режиме.

GetX : Integer;

возвращает координату X(по горизонтали) текущей позиции графического указателя относительно установленного графического окна.

GetY : Integer;

возвращает координату Y(по вертикали) текущей позиции графического указателя относительно установленного графического окна.

GetPixel ( x, y : Integer ) : Word ;

возвращает цвет пикселя с заданными координатами ( x, y ).

12.5 Процедуры работы с линиями

Procedure ...

SetLineStyle ( LineStyle, Pattern, Thickness : Word ) ;

задает текущие параметры линии (стиль, шаблон, толщину).

LineStyle

стиль линии.

Pattern

шаблон линии — задается только для линий, стиль которых определяется пользователем (LineStyle = UserBitLn). При этом два байта параметраPatternопределяют образец линии следующим образом: каждый установленный в единицу бит этого слова соответствует светящемуся пикселю в линии, нулевой бит — несветящемуся. Таким образом, параметрPatternзадает отрезок линии длиной в 16 пикселей. Этот образец периодически повторяется по всей длине линии.

Thickness

толщина линии.

Для стиляитолщиныв модулеGraphопределены следующие константы:

Const

SolidLn = 0 ; { сплошная линия }

DottedLn = 1 ; { из точек }

CenterLn = 2 ; { из точек и тире }

DashedLn = 3 ; { пунктирная линия}

UserBitLn = 4 ; { определяется пользователем }

Const

NormWidth = 1 ; { нормальная толщина — в один пиксель }

ThickWidth = 3 ; { жирная линия — в три пикселя }

Установленный процедурой стиль линии используется при построении прямоугольников, многоугольников и других фигур.

В случае аварийной ситуации (недопустимые параметры) процедура не производит никаких изменений текущих параметров и устанавливает код ошибки: -11.

GetLineSettings (var LineInfo : LineSettingsType );

возвращает текущие параметры линии (стиль, шаблон, толщину).

LineInfo

переменная, в которую записываются текущие параметры линии — переменная типа LineSettingsType, который определен в модулеGraph:

Type

LineSettingsType = Record

LineStyle : Word ; { стиль линии }

Pattern : Word ; { шаблон }

Tickness : Word { толщина }

End ;

SetWriteMode ( WriteMode : Integer );

устанавливает режим рисования линий — способ взаимодействия новых линий с существующим изображением.

Для задания параметра WriteMode можно использовать, например, следующие определенные в модулеGraphконстанты:

Const

CopyPut = 0 ; { линии накладываются на существующее изображение }

XorPut = 1 ;{ наложение с применением логической операцииXor:

в точках пересечения выводимой линии с имеющимся

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

на обратную }

Режим, установленный процедурой SetWriteMode, распространяется только на процедурыDrawPoly,Line,LineTo,LineRel, Rectangle.

MoveTo ( x, y : Integer );

перемещает текущий графический указатель в точку с координатами ( x,y) (точка на экране не высвечивается).

Координаты определяются относительно левого верхнего угла окна или — если окно не установлено — экрана.

MoveRel ( dx, dy : Integer );

перемещает указатель на заданное расстояние ( dx,dy) по отношению к его предыдущему положению (x,y), т.е. в точку (x+dx,y+dy) (точка на экране не высвечивается).

Line ( x1, y1, x2, y2 : Integer ) ;

рисует отрезок прямой от точки ( x1,y1) до точки (x2,y2 ) без изменения значения графического указателя.

Текущий цвет задается процедурой SetColor, текущие параметры линии — процедуройSetLineStyle, а режим построения линии — процедуройSetWriteMode.

Пример 12.7(иллюстрация некоторых упомянутых выше процедур и функций):

Uses Graph ;

Var

Driver, Mode, ErrCode : Integer ;

Begin

Driver := Detect ;

InitGraph ( Driver, Mode , ’’ ) ;

ErrCode := GraphResult ;

If ErrCode <> grOK

then

Begin

WriteLn ( Ошибка графики: ’, GraphErrorMsg ( ErrCode ) ) ;

ReadLn

End

else

Begin

Line ( 0, 0, GetMaxX, GetMaxY ) ;

ReadLn ;

CloseGraph

End

End.

LineTo ( x, y : Integer );

проводит отрезок прямой из текущей позиции (на которую установлен текущий указатель) до точки ( x,y).

Текущий цвет задается процедурой SetColor, текущие параметры линии — процедуройSetLineStyle, а режим построения линии — процедуройSetWriteMode.

LineRel ( dx, dy : Integer );

проводит отрезок прямой из текущей позиции в точку, сдвинутую относительно исходной позиции ( x,y) на (dx,dy), т.е. в точку (x+dx,y+dy).

Текущий цвет задается процедурой SetColor, текущие параметры линии — процедуройSetLineStyle, а режим построения линии — процедуройSetWriteMode.

Пример 12.8 (изменение стиля и толщины линии):

. . .

SetLineStyle ( DottedLn, 0, ThickWidth ) ;

Line ( 10, 10, 140, 250 ) ;

SetLineStyle ( SolidLn, 0, NormWidth ) ;

LineTo ( 240, 150 ) ;

. . .