- •Тема 3.1. Модуль Graph. Графічний режим.
- •1. Перемикання екрана в графічний режим.
- •2. 3Акінчення роботи в графічному режимі.
- •3. Робота в графічному режимі.
- •4. Графічні режими.
- •5. Кольори та палітри.
- •6. Переміщення поточного вказівника та малювання точки.
- •7. Малювання ліній.
- •8. Малювання геометричних фігур.
- •9. Виведення тексту в графічному режимі.
- •10. Аналіз програм з елементами графіки, звукових сигналів.
8. Малювання геометричних фігур.
Модуль Graph дозволяє програмувати виведення на екран деяких геометричних фігур. Процедури модуля Graph малюють їх поточним кольором та поточним типом лінії. Для деяких фігур можна задавати зразок і колір зафарбування.
Процедура SetFillStyle(Z : word; Соlоr : word). Встановлює зразок і колір зафарбування для всіх типів зафарбування, виконуваних процедурами FillPoly, Ваr, Bar3D, i PieSlice. Параметр Color задає значення кольору зафарбування і приймає одне з допустимих для поточного режиму значення кольору. Параметр Z задає зразок зафарбування. У модулі Сгарh оголошено декілька констант, які позначають певні зразки зафарбування:
EmptyFill = 0; {заповнити область фоновим кольором}
SolidFill = 1; {заповнення області поточним кольором}
LineFill = 2; {заповнити символами тире}
LtSlashFill = 3; {заповнити символами ///}
SlashFill = 4; {заповнити жирними лініями ///}
BkSlashFill = 5; {заповнити символами \\\ (жирними лініями) }
LtBkSlashFill = 6; { заповнити символами \\\ }
HatchFill = 7; {заповнити рідким штрихуванням }
XHatchFill = 8; {заповнити густим штрихуванням, що пересікається }
InterLeaveFill = 9; {заповнити переривчастою лінією}
WideDotFill = 10; {заповнити рідкими точками}
CloseDotFill = 11; {заповнити густими точками}
Процедурою SetFillPattern програміст може створювати свої зразки зафарбування, формуючи спеціальний шаблон. За замовчуванням вибирається суцільне зафарбування білим кольором.
Приклад:
SetFіllStyle(SolidFill,0);
Ваr(хl, у1, х2, у2);
SetFіllStyle(XHatchFіll,0);
Ваr(х1, у1, х2, у2);
Процедура Ваr(х1, у1, х2, у2 : integer). Малює зафарбований стовпець з координатами х1, у1- лівий нижній кут, та х2, у2 - правий верхній кут, використовуючи зразок зафарбування і колір зафарбування, задані процедурами SetFillStyle і SеtFillPаttеrn.
Процедура Ваr3D(х1, у1, х2, у2: integer; g : word; t : Boolean). Малює тривимірний паралелепіпед, використовуючи зразок зафарбування і колір зафарбування, задані за допомогою процедур SеtFillStylе і SetFillPattern. Тривимірний контур паралелепіпеда малюється кольором і типом лінії, встановленими процедурами SetColor і SetLineStyle. Параметр g задає глибину тривимірного контуру в пікселях. Якщо параметр t приймає значення True, то для паралелепіпеда малюється тривимірна вершина, у протилежному випадку вершина не малюється, що дозволяє малювати кілька паралелепіпедів, розташованих один на одному.
Процедура Circle(X,Y : integer; R : word). Малює коло радіусу R з центром в точці з координатами (Х,У). Коло малюється поточним кольором, встановленим процедурою SetColor.
Процедура Arc(X,Y:integer; КІ, К2, R:word). Малює дугу кола з центром (Х,У) і радіусом R. Дуга малюється від значення початкового кута К1 (в градусах) до кінцевого кута К2 поточним кольором. Початковий кут, рівний 0 і кінцевий кут, рівний 359, задають повне коло.
Процедура DrawPoly(N : word; var Koord). Використовуючи поточний тип прямої і поточний колір, малює контур багатокутника. Параметр Koord є нетипований параметр, що містить координати кожної вершини багатокутника. Параметр N задає кількість пар координат вершин у параметр і Koord. Пара координат складається з двох слів (word): значення х і значення у. Для накреслення замкнутої фігури з n вершинами потрібно передати при звертанні до процедури DrawPoly n+1 координату, де координата вершини з номером n+1 буде дорівнювати координаті вершини з номером 1.
Процедура FillPoly(N : word; var Koord). Малює і зафарбовує багатокутник, використовуючи поточний стиль зафарбування і колір зафарбування, що задаються процедурами SеtFillStylе і SеtFillРаttеrn. При кресленні контуру 6агатокутника використовується поточний тип лінії, що встановлюються процедурою SetLineStyle і поточний колір. Параметри N i Koord ті ж, що й у процедурі DrawPoly.
Процедура Еlliрsе(Х, У : integer; К1, К2 : word; Rx, Ry : word). Малює дугу еліпса від початкового кута К1 до кінцевого кута К2, заданих у градусах, з центром в точці (Х,У). Параметри Rx та Ry задають довжини горизонтальної і вертикальної осі. Дуга малюється поточним кольором. Якщо значення початкового кута рівне 0, а кінцевого кута рівне 359, то еліпс малюється повністю. Кути для процедур Аrс, Ellipse і PieSlice задаються проти напрямку годинної стрілки. При цьому значення 0 відповідає положенню годинникової стрілки, що вказує на 3-тю годину, 90 градусів - 12-ту годину тощо.
Процедура PieSlice(x, у : integer; К1, К2, R : word). Малює і зафарбовує кольором сектор кола з центром в (Х, У) і радіусом R. Сектор малюється від початкового кута К1 до кінцевого кута К2. Контур сектора малюється поточним кольором, а при зафарбовуванні використовуються тип і колір зафарбування, задані процедурами SеtFillStylе і SеtFillРаttеrn. Початковий кут, рівний 0 і кінцевий кут, рівний 359, задають повний круг.
Процедура Rectangle(x1, у1, х2, у2 : integer). Малює прямокутник. Точка з координатами (х1, у1) задає верхній лівий кут, (х2, у2) - задає правий нижній кут. Використовує поточний тип лінії, що встановлюються процедурою SetLineStyle і поточний колір.
Процедура Sector(x, у : integer; Кl, К2, Rx, Ry: word). Малює і зафарбовує сектор еліпса з центром (Х,У), горизонтальним і вертикальним радіусами Rx і Ry від початкового кута К1 до кінцевого кута К2. Сектор малюється поточним кольором і зафарбовується з використанням зразка зафарбовування і кольору, заданих за допомогою процедур SеtFillStylе чи SеtFillРаttеrn. Якщо задано початковий кут 0 і кінцевий кут 360, то еліпс буде намальований і зафарбований повністю. Кути для процедур Arc, Ellipse, FillEllipse, PieSlice задаються проти годинникової стрілки, Значення 0 відповідає положенню годинникової стрілки, що вказує на 3-тю годину, 90 градусів - 12-ту годину і т.д.
