Delphi дозволяє програмісту розробляти програми, що можуть виводити графіку: схеми, креслення, ілюстрації.
Програма виводить графіку на поверхню об'єкта ( форми чи компонент, наприклад, Image). Поверхні об'єкта відповідає властивість Саnvаs. Для того щоб вивести на поверхню об'єкта графічний елемент (пряму лінію, окружність, прямокутник і т.д.), необхідно застосувати до властивості Саnvаs цього об'єкта відповідний метод. Наприклад, інструкція Form1.Canvas.Rectangle (10,10,100,100) викреслює у вікні програми прямокутник.
Холст
Поверхні, на яку програма може виводити графіку, відповідає властивість Canvas. У свою чергу, властивість Саnvаs — це об'єкт типу TCanvas. Методи цього типу забезпечують вивід графічних примітивів (точок, ліній, окружностей, прямокутників і т.д.), а властивості дозволяють задати характеристики виведених графічних примітивів: колір, товщину і стиль ліній; колір і вид заповнення областей; характеристики шрифту при виводі текстової інформації.
Методи виводу графічних примітивів розглядають властивість Canvas як деяке абстрактне полотно, на якому вони можуть малювати (canvas переводиться як "поверхня", "полотно для малювання"). Полотно складається з окремих точок — пікселів. Положення піксела характеризується його горизонтальної (X) і вертикальної (Y) координатами. Лівий верхній піксел має координати (0, 0). Координати зростають зверху вниз і з ліва праворуч (мал. 4.1). Значення координат правої нижньої точки полотна залежать від розміру полотна.
Рис. 4.1Координати точок полотна
Розмір полотна можна одержати, звернувшись до властивостейHeight і Width області ілюстрації(Іmage) чи до властивостей форми:ClientHeight і ClientWidth.
Олівець і кисть
Художник у своїй роботі використовує олівці і кисті. Методи, що забезпечують креслення на поверхні полотна графічних примітивів, теж використовують олівець і кисть. Олівець застосовується для креслення ліній і контурів, а кисть — для зафарбовування областей, обмежених контурами.
Олівцю і кисті, що використовують для виводу графіки на полотні, відповідають властивості Реn (олівець) і Brush (кисть), що являють собою об'єкти типу ТРеn і TBrush, відповідно. Значення властивостей цих об'єктів визначають вид виведених графічних елементів.
Олівець
Олівець використовується для креслення крапок, ліній, контурів геометричних фігур: прямокутників, окружностей, еліпсів, дуг і ін. Вид лінії, що залишає олівець на поверхні полотна, визначають властивості об'єкта TPеn , що перераховані в табл. 4.1
Таблиця 4.1.Властивості об'єкта TPеn (олівець)
Властивість
Визначає
Color
Колір лінії
Width
Товщину лінії
Style
Вид лінії
Mode
Режим відображення
Властивість Color задає колір лінії, що вичерчується олівцем. У табл. 4.2 перераховані іменовані константи (тип TColor), які можна використовувати як значення властивості Color.
Таблиця 4.2Значення властивості Color визначає колір лінії
Константа
Колір
Константа
Колір
clBlack
Чорний
clSilver
Сріблистий
clMaroon
Каштановий
clRed
Червоний
clGreen
Зелений
clLime
Салатний
clOlive
Маслиновий
clBlue
Синій
clNavy
Темно-синій
clFuchsia
Яскраво-рожевий
clPurple
Рожевий
clAqua
Бірюзовий
clGray
Сірий
clWhite
Білий
Властивість width задає товщину лінії (у пікселах). Наприклад, інструкція Canvas.Pen.width: =2 установлює товщину лінії в 2 піксела.
Властивість style визначає вид (стиль) лінії, що може бути безупинної чи переривчастої, що складається зі штрихів різної довжини. У табл. 4.3 перераховані іменовані константи, що дозволяють задати стиль лінії. Товщина пунктирної лінії не може бути більше 1. Якщо значення властивості Pen.width більше одиниці, те пунктирна лінія буде виведена як суцільна.
Таблиця 4.3Значення властивості Реn.Tуре визначає вид лінії
Константа
Вид лінії
psSolid
Суцільна лінія
psDash
Пунктирна лінія, довгі штрихи
psDot
Пунктирна лінія, короткі штрихи (крапки)
psDashDot
Пунктирна лінія, чергування довгого і короткого штрихів
psDashDotDot
Пунктирна лінія, чергування одного довгого і двох коротких штрихів
psClear
Лінія не відображається (використовується, якщо не треба зображувати границю області, наприклад, прямокутника)
Властивість Mode визначає, як буде формуватися колір крапок лінії в залежності від кольору крапок полотна, через які ця лінія викреслюється. За замовчуванням уся лінія викреслюються кольором, обумовленим значенням властивості Pen.Color.
Однак програміст може задати інверсний колір лінії стосовно кольору фону. Це гарантує, що незалежно від кольору фону всі ділянки лінії будуть видимі, навіть у тому випадку, якщо колір лінії і колір фону збігаються.
У табл. 4.4 перераховані деякі константи, які можна використовувати як значення властивості Pen.Mode.
Таблиця 4.4Значення властивості Pen.Mode впливає на колір лінії
Константа
Колір лінії
pmBlack
Чорний, не залежить від значення властивості Pen. Color
pmWhite
Білий, не залежить від значення властивості Pen. Color
pmCopy
Колір лінії визначається значенням властивості Pen . Color
pmNotCopy
Колір лінії є інверсним стосовно значення властивості Pen. Color
pmNot
Колір крапки лінії визначається як інверсний стосовно кольору крапки полотна, у яку виводиться крапка лінії
Кисть
Кисть (Сanvas.Brush) використовується методами, що забезпечують креслення замкнутих областей, наприклад геометричних фігур, для заливання (зафарбовування) цих областей. Кисть, як об'єкт, володіє двома властивостями, перерахованими в табл. 4.5.
Таблиця 4.5Властивості об'єкта TBrush (кисть)
Властивість
Визначає
Color
Style
Колір зафарбовування замкнутої області
Стиль (тип) заповнення області
Область усередині контуру може бути зафарбована чи заштрихована. У першому випадку область цілком перекриває фон, а в другому — крізь незаштриховані участки області буде видно фон.
Як значення властивості Color можна використовувати кожну з констант типу TColor (див. список констант для властивості Pen.color у табл. 4.2).
Константи, що дозволяють задати стиль заповнення області, приведені в табл. 4.6.
Таблиця 4.6Значення властивості Brush.style визначають тип зафарбовування
Константа
Тип заповнення (заливання) області
bsSolid
Суцільне заливання
bsClear
Область не зафарбовується
bsHorizontal
Горизонтальне штрихування
bsVertical
Вертикальне штрихування
bsFDiagonal
Діагональне штрихування з нахилом ліній уперед
bsBDiagonal
Діагональне штрихування з нахилом ліній назад
bsCross
Горизонтально-вертикальне штрихування, у клітку
bsDiagCross
Діагональне штрихування, у клітку
Як приклад у лістингу 4.1 приведена програма Стилі заповнення областей,що у вікно (мал. 4.2) виводить вісім прямокутників, зафарбованих чорним кольором з використанням різних стилів.