Графічні можливості delphi дуга, прямокутник, сектор, точка, delphi, компоненти delphi,
- xl, yl, х2, у2 - параметри, що визначають еліпс (коло), частиною якого є викреслюють дуга;
- хз, уз - параметри, що визначають початкову точку дуги;
- х4, у4 - параметри, що визначають кінцеву точку дуги.
Початкова (кінцева) точка - це точка перетину кордону еліпса і прямої, проведеної з центру еліпса в точку з координатами хз і уз (х4, у4). Дуга викреслюється проти годинникової стрілки від початкової точки до кінцевої
Колір, товщина і стиль лінії, якою викреслюється дуга, визначаються значеннями властивості Реп поверхні (canvas), на яку виконується висновок.
Мал. 1О.7. Значення параметрів методу Arc визначають дугу як частину еліпса (кола)
Прямокутник викреслюється методом Bectangie, інструкція виклику якого в загальному вигляді виглядає наступним чином:
1. Об'ект.Canvas. Rectangle (xl, yl, х2, у 2]
- Об'єкт - ім'я об'єкта (компонента), на поверхні якого виконується креслення;
- x1, y1 і y2, у2 - координати лівого верхнього і правого нижнього кутів прямокутника.
Метод RoundRec теж викреслює прямокутник, але з округленими кутами. Інструкція виклику методу RoundRec виглядає так:
1. Об'ект.Canvas. RoundRec (xl, yl, х 2. у 2. хз, УЗ)
- x1, y1, х2, у2 - параметри, що визначають положення кутів прямокутника, в який вписується прямокутник із закругленими кутами;
- хз і УЗ - розмір еліпса, одна чверть якого використовується для викреслювання округленій кута (рис. 10.8).
Мал. 10.8. Метод RoundRec викреслює прямокутник з округленими кутами
Вид лінії контуру (колір, ширина і стиль) визначається значеннями властивості реп, а колір і стиль заливки області усередині прямокутника - значеннями властивості Brush поверхні (canvas), на якій прямокутник викреслюється.
Є ще два методи, які викреслюють прямокутник, використовуючи як інструмент тільки кисть (Brush). Метод FiliRect викреслює зафарбований прямокутник, а метод FrameRect - тільки контур. У кожного з цих методів лише один параметр - структура типу TRect. Поля структури TRect містять координати прямокутної області, вони можуть бути заповнені за допомогою функції Rect.
Нижче як приклад використання методів FillRect і FrameRect приведена процедура, яка на поверхні форми викреслює прямокутник з червоною заливкою і прямокутник із зеленим контуром.
01. procedure TForm1. ButtonlClick (Sender: TObject);
Метол polygon викреслює багатокутник. Як параметр метод отримує масив типу TPoint. Кожен елемент масиву представляє собою
запис, поля (х, у) якої містять координати однієї вершини багатокутника. Метод Polygon викреслює багатокутник, послідовно
поєднуючи прямими лініями точки, координати яких знаходяться в масиві; першу з другою, другу з третьою, третю з четвертою і т. д. Потім
з'єднуються остання і перша точки.
Колір і стиль кордону багатокутника визначаються значеннями властивості Реп, а Івет і стиль заливки області, обмеженої лінією кордону, - зна
нями властивості Brush, причому область зафарбовується з використанням поточного кольору і стилю кисті.
Нижче наведена процедура, яка, використовуючи метод polygon, викреслює трикутник:
Метод polygon викреслює багатокутник. Як параметр методполучает масив типу TPoint. Кожен елемент масиву представляє собою запис, поля (х, у) якої містять координати однієї вершини багатокутника. Метод Polygon викреслює багатокутник, последовательносоедіняя прямими лініями точки, координати яких знаходяться в масиві; першу з другою, другу з третьою, третю з четвертою і т. д. Затемсоедіняются остання і перша точки.
Колір і стиль кордону багатокутника визначаються значеннями свойстваРеп, а колір і стиль заливки області, обмеженої лінією кордону, - значеннями властивості Brush, причому область зафарбовується з іспользованіемтекущего кольору і стилю кисті.
Нижче наведена процедура, яка, використовуючи метод polygon, вичерчіваеттреугольнік:
01. procedure TForml. Button2Click (Sender: TObject);
- x1, y1, х2, у2 - параметри, що визначають еліпс (коло), частиною якого є сектор;
- хз, УЗ, х4, у4 - параметри, що визначають координати кінцевих точок прямих, які є межами сектора.
Початкові точки прямих співпадають з центром еліпса (кола). Сектор вирізається проти годинникової стрілки від прямої, заданої точкою з координатами (хз, уз), до прямої, заданої точкою з координатами (х4, у4) (рис. 10.9).
Мал. 1О.9. Значення параметрів методу Pie визначають сектор як частина еліпса (кола)

Поверхні, на яку програма може здійснювати виведення графіки, відповідає об'єкт canvas. Властивість Pixels що є двовимірним масивом типу TCoior, містить інформацію про колір кожної точки графічної поверхні. Використовуючи властивість Pixels, можна задати тре
Поверхні, на яку програма може здійснювати виведення графіки, відповідає об'єкт canvas. Властивість Pixels що є двовимірним масивом типу TColor, містить інформацію про колір кожної точки графічної поверхні. Використовуючи властивість Pixels, можна задати необхідний колір для будь-якої точки графічної поверхні, т. Е. "Намалювати" крапку.
1. Form1. Canvas. Pixels [10. 10]: = clRed
забарвлює точку поверхні форми в червоний колір.
Розмірність масиву Pixels визначається розміром графічної поверхні. Розмір графічної поверхні форми (робочої області, яку також називають клієнтської) задається значеннями властивостей clientwidth і clientHeight, а розмір графічної поверхні компонента image - значеннями властивостей width і Height. Лівій верхній точці робочої області форми відповідає елемент pixels [о, о], а правої нижньої -Pixels [Clientwidth - 1, ClientHeight - 1].
Властивість Pixels можна використовувати для побудови графіків. Графік будується, як правило, на основі обчислень за формулою. Межі діапазону зміни аргументу функції є початковими даними. Діапазон зміни значення функції може бути обчислений. На підставі цих даних можна обчислити масштаб, що дозволяє побудувати графік таким чином, щоб він займав всю область форми, призначену для виведення графіка.
Наприклад, якщо деяка функція f (x) може приймати значення від нуля до 1000, і для виведення її графіка використовується область форми висотою в 250 пікселів, то масштаб осі у обчислюється за формулою: т = 250/1000. Таким чином, значення / (х) = 70 буде відповідати точка з координатою Y = 233. Значення координати обчислено за формулою
Y = h-f (x) x m = 250 - 70х (250/1000),
де h - висота області побудови графіка.
Зверніть увагу на те, що точне значення виразу
250 - 70х (250/1000) одно 232,5.
Але т. К. Індексом властивості Pixels, яке використовується для виведення точки на поверхню canvas, може бути тільки ціле значення, то число 232,5 округляється до найближчого цілого, яким є число 233.
Наступна програма, текст якої наведено в лістингу 10.5, використовуючи властивість Pixels, виводить графік функції у = 2 sm (x) e ^ 5. Для побудови графіка використовується вся доступна область форми, причому якщо під час роботи програми користувач змінить розмір вікна, то графік буде виведений заново з урахуванням реальних розмірів вікна.
Лістинг 10.5. Графік функції
Основну роботу виконує процедура GrofFunc, яка спочатку обчислює максимальне (у2) і мінімальне (y1) значення функції на відрізку [xl, x2]. Потім, використовуючи інформацію про ширину (Forml.ClientWidth -40) і висоті (Forml.ClientHeight - 4о) області виведення графіка, обчислює масштаб по осях X (ТХ) і У (ту).
Висота і ширина області виводу графіка визначається розмірами робочої (клієнтської) області форми, т. Е. Без урахування області заголовка і кордонів. Після обчислення масштабу процедура обчислює координату Y горизонтальній осі (УО) і викреслює координатні осі графіка. Потім виконується безпосереднє побудова графіка (рис. 10.10).
Виклик процедури GrOfFunc виконують процедури обробки подій OnPaint і onFormResize. Процедура TForml.FormPaint забезпечує викреслювання графіка після появи форми на екрані в результаті запуску програми, а також після появи форми під час роботи програми, наприклад, в результаті видалення або переміщення інших вікон, повністю або частково перекривають вікно програми. Процедура TForm1.FormResize забезпечує викреслювання графіка після зміни розміру форми.
Мал. 10.10. Графік, побудований процедурою GroffFunc

Наведена програма досить універсальна. Замінивши інструкції в тілі функції f (х). можна отримати графік іншої функції. Причому незалежно від виду функції її графік буде займати всю область, призначену для виведення.
Примітка: Р ассмотренная програма працює коректно, якщо функція, графік якої треба побудувати, приймає як позитивні, так і негативні значення. Якщо функція у всьому діапазоні тільки позитивна або тільки негативна, то в програму слід внести зміни. Які - хай це буде вправою для Новомосковсктеля.