Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Рисование линий и точек

 

Рассмотрим несколько процедур для рисования линий и точек. С их помо­щью можно выводить на экран, например, оси координат (процедурой Line) и кривые изменения переменных (процедурой PutPixel).

Процедура Line вычерчивает линию с указанными координатами ее начала и конца. Обращение к процедуре Line:

Line (XI,..VI, Х2, Y2);

где XI, Y1 - выражения типа Integer, задающие координаты начала линии (в пикселях);

Х2, Y2 - выражения типа Integer, задающие координаты конца линии (в пикселях).

Процедура LineTo вычерчивает линию от текущего положения указателя до положения, заданного его новыми координатами. Обращение к процедуре

LineTo:

LineTo (X, Y);

где X, Y - выражения типа Integer, которые определяют координаты нового положения указателя (в пикселях).

Процедура LineRel вычерчивает линию от текущего положения указателя до положения, заданного приращениями его координат. Обращение к процедуре

LineRel:

LineRel.(DX, DY);

Где DX, DY - выражения типа Integer, задающие приращения координат для получения нового положения указателя (в пикселях).

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

Процедура SetLineStyle устанавливает новый стиль вычерчивания линий. Она влияет на все линии, вычерчиваемые процедурами Line, LineTo, DrawPoly и др. Формат обращения к процедуре SetLineStyle:

SetLineStyle (вид, образец, толщина);

где все параметры - выражения типа Word; вид - вид линии; образец - образец линии; толщина - толщина линии.

Вид линии определяется следующими значениями констант:

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

DottedLn =1; { точечная линия }

CenterLn =2; { штрихпунктирная линия }

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

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

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

Параметр толщина линий может принимать одно из двух значений:

CONST NormWidth = 1; { толщина в 1 пиксель: нормальная } ThickWidth = 3; { толщина в.3 пикселя: жирная }

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

Процедура PutPixel выводит на экран заданным цветом пиксель (точку) по указанным координатам. Формат обращения к процедуре PutPixel: PutPixel (X, Y, цвет);

где X, Y - выражения типа Integer, определяющие координаты точки (в пикселях); цвет - выражение типа Word, определяющее цвет точки.

Координаты задаются относительно левого верхнего угла окна пли, если окно не установлено, относительно левого верхнего угла экрана. Для вывода ряда точек кривой надо многократно вызвать процедуру PutPixel, каждый раз с новыми координатами.

Пример вычерчивания кривых (синусоиды и косинусоиды) процедурой PutPixel.

PROGRAM RIS;

USES GRAPH, CRT;

VAR Ga, Gm, Error: INTEGER;

I, X, Y: REAL;

BEGIN

Ga:= DETECT; Gm:= DETECT;

INITGRAPH (Ga, Gm, ' '); Error:= GraphResult;

IF Error <> GrOK THEN

BEGIN

WRITELN (GraphErrorMsg (Error));

Halt(l)

END;

X:= - 2 *PI; SetColor(4);

Line(0, 175, 640, 175); { - горизонтальная ось }

Line(320, 0, 320, 350); { - вертикальная ось }

WHILE X < 2 * PI DO

BEGIN

Y:= Sin(X); { - формирование ординаты Sin(X) }

PutPixel(Round(X*50)+320, Round(Y*80)+175, 2); { - вывод точки }

Y:= Cos(X); { - формирование ординаты Cos(X) }

PutPixel(Round(X*50)+320, Round(Y*80)+175, 3); { - вывод точки }

X:= X + 0.1;

END; { Установка цвета и стиля текста: }

SetColor(5); SetTextStyleU, 0, 5);

OutTextXY(20, 20, 'TURBO PASCAL 7.0 (GRAPH)1); { - вывод текста }

SetTextStyle(3, 0, 3); { - установка стиля текста }

OutTextXY(20, 60, 'TURBO PASCAL 7.0 (GRAPH)'); { - вывод текста }

READLN; { - приостановка до нажатия клавиши Enter }

CLOSEGRAPH; { - закрыть графический режим }

END.

Процедура SetColor устанавливает текущий цвет выводимых линий и симво­лов. Формат обращения к процедуре SetColor:

SetColor (цвет);

где цвет - выражение типа Word, задающее текущий цвет символов и линий.

Значения цветов могут быть от 0 до 15 и приведены ранее. Пример рисование линий случайным образом со случайным выбором их цвета.

program RNDLINE; Uses Graph, Crt;

var Driver, Regim, Error: integer;

begin

Driver:= Detect; InitGraph(Driver, Regim, ' ');

Error:= GraphResult; if Error <> grOk then

begin

write (GraphErrorMsg (Error));

Exit

end;

Randomize; SetTextStyle (1, 0, 5);

OutTextXY (О, О, 'СЛУЧАЙНЫЕ ЛИНИИ');

repeat SetColor (Random (16));

LineTo (Random (GetMaxX), 60 + Random (GetMaxY));

Delay(100); { - задержка программы }

until KeyPressed; { - выполнять до нажатия любой клавиши }

CloseGraph { - закрыть графический режим }

end.

 

<== предыдущая лекция | следующая лекция ==>
Вывод текста | Рисование многоугольников
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 350; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.