Графіка у системі турбо паскаль
4. Висновок найпростіших фігур
4.1. Виведення точки
Які б зображення не відображалися на екрані, всі вони побудовані з точок. Теоретично можна створити будь-яке зображення шляхом побудови точок певного кольору у потрібному місці екрана. У бібліотеці Graph виведення точки здійснюється процедурою
PutPixel(x,y:integer,color:word);
Тут x, y – координати розташування крапки, color – колір.
Можливі значення Color наведено у табл. 10.1.
Приклад. Оператори виводять у центрі екрана точку червоного кольору:
PutPixel(320,240,4);
PutPixel(320,240,Red);
4.2. Колірна шкала
4.3. Виведення лінії
З точок будуються лінії (відрізки прямих). Це можна зробити за допомогою процедури
Line(x1,y1,x2,y2:integer);
Тут x1, y1 – координати початку, x2, y2 – координати кінця лінії, наприклад
Line(1,1,600,1);
Line не має параметра для встановлення кольору. У цьому випадку колір задається процедурою SetColor (колір: word); де колір із табл. 10.1.
SetColor(Gyan);
Line(1,1,600,1);
Для креслення ліній застосовуються ще дві процедури:LineToтаLineRel.
LineTo(x,y:integer);
будує лінію з точки поточного положення покажчика на точку з координатами(x,y). Процедура
LineRel(dx,dy:integer);
проводить лінію від точки поточного розташування покажчика (x,y) у точку (x + dx,y + dy).
Турбо Паскаль дозволяє викреслювати лінії різного стилю: тонкі, широкі, штрихові, пунктирні і т. д. Установка стилю виконується процедурою
SetLineStyle(a,b,c:word);
Тутaвстановлює тип рядка, можливі значення якогонаведено у табл. 10.2,b- зразок,с- товщина лінії, що визначається константами, зазначеними в табл. 10.3. Якщо застосовується один із стандартних стилів, то значенняbдорівнює 0. Якщо користувач хоче активізувати власний стиль, то значенняbдорівнює 4. У цьому випадку користувач сам вказує примітив (зразок) з якого будується лінія.
Наприклад:
SetLineStyle(1,0,1);
Line(15,15,150,130);
SetLineStyle(UserBitLn,$5555,ThickWidth);
Line(15,15,150,130);
4.4. Стандартні типи та товщина ліній
Лінія з точок та тире
Нормальна товщина (1 піксель)
Жирна лінія (3 пікселі)
4.5. Побудова прямокутників
Для побудови прямокутних фігур є кілька процедур. Перша їх – креслення одномірного прямокутника:
Rectangle(x1,y1,x2,y2:integer);
Тут x1, y1 – координати лівого верхнього кута, x2, y2 – координати правого нижнього кута прямокутника. Область усередині прямокутника не зафарбована та збігається за кольором із тлом.
Більш ефектні для сприйняття прямокутники можна будувати за допомогою процедури, яка малює зафарбований прямокутник:
Bar(x1,y1,x2,y2:integer);
Колір забарвлення встановлюється за допомогою SetFillStyle. Ще одна ефектна процедура –
Bar3D(x1,y1,x2,y2,d:integer;a:boolean);
- Викреслює тривимірний зафарбований прямокутник (паралелепіпед). При цьому використовуються тип та колір забарвлення, встановлені за допомогою SetFillStyle. Параметр d є число пікселів, що задають глибину тривимірного контуру. Найчастіше його значення дорівнює чверті ширини прямокутника (d:=(x2-x1) div 4). Параметр a визначає, будувати над прямокутником вершину(а:=True) чи ні (a:=False).
SetColor(Green);
Rectangle(200,100,250,300);
SetFillStyle(1,3);
Bar(10,10,50,100);
SetFillStyle(1,3);
Bar3D(10,10,50,100,10,True);
4.6. Побудова багатокутників
Багатокутники можна малювати різними способами, наприклад, за допомогою процедури Line. Однак у Турбо Паскалі є процедураDrawPoly, яка дозволяє будувати будь-які багатокутники лінією поточного кольору, стилю та товщини. Вона має формат
ПараметрPolyPointsє нетипізованим параметром, який містить координати кожного перетину в багатокутнику. Параметразадає число координат уPolyPoints. Необхідно пам'ятати, що для викреслення замкнутої фігури зNвершинами потрібно передати при зверненні до процедуриDrawPolyN+1 координату, де координата вершини з номеромNдорівнюватиме координаті вершини з номером 1.
4.7. Побудова дуг та кіл
Процедура викреслення кола поточним кольором має такий формат:
Тутx,y- координати центру кола,r- її радіус.
Наприклад, фрагмент програми забезпечить виведення яскраво-зеленого кола з радіусом 50 пікселів та центром у точці (450, 100):
SetColor(LightGreen);
Circle(450,100,50);
Дуги можна викреслити за допомогою процедури
Arc(x,y:integer;a,b,R:integer);
Тутx,y– центр кола,a,b– початковий і кінцевий кути в градусах,R– радіус. Для завдання кутів використається полярна система координат.
Колір для креслення встановлюється процедуроюSetColor. У разі a = 0 ° і b = 360 °, викреслюється повне коло.
Наприклад, виведемо дугу червоного кольору від 0° до 90° у вже викресленій за допомогоюCircle(450,100,50)кола:
SetColor(Red);
Arc(450,100,0,90,50);
Для побудови еліптичних дуг призначено процедуру
Ellipse(x,y,a,b,Rx,Ry:integer);
Тутx,y- центр еліпса,Rx,Ry- горизонтальна та вертикальна осі. У разі a = 0° та b = 360° викреслюється повний еліпс. Наприклад, побудуємо блакитний еліпс:
SetColor(9);
Ellipse(100,100,0,360,50,50);
Фон всередині еліпса збігається з екраном фону. Щоб створити зафарбований еліпс, використовується спеціальна процедура
FillEllipse(x,y:integer,Rx,Ry:integer);
Забарвлення еліпса здійснюється за допомогою процедури
SetFillStyle(a,b:word);
Тута– стиль забарвлення (див. табл. 10.4),b– колір забарвлення (див. табл. 10.1). Наприклад, намалюємо яскраво-червоний еліпс, заповнений рідкісними точками зеленого кольору:
FillEllipse (300,150,50,50);
Для побудови секторів можна використовувати такі процедури:
PieSlice(x,y:integer;a,b,R:word);
Малює та заповнює сектор кола. Координатиx,y- центр кола, сектор малюється від початкового кутаaдо кінцевого кутаb, а зафарбовування відбувається при використанні спеціальних процедур;
Sector(x,y:integer;a,b,Rx,Ry:word);
Створює та заповнює сектор в еліпсі. Координатиx,y– центр,Rx,Ry– горизонтальний та вертикальний радіуси, і сектор викреслюється від початкового кутаaдо кінцевого кутаb.