Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Теоретичні відомості




Побудова графічних зображень

C++ Builder дозволяє програмістові розробляти програми, які працюють з графікою.

Компонент Image (сторінка Additional бібліотеки компонентів) - для відображення графічних об'єктів, основна властивість Picture, де задається сам малюнок.

Багато компонентів мають властивість Canvas (канва, полотно), що є областю компоненту, на якій можна малювати або відображати готові зображення. Цю властивість мають форми, графічні компоненти Image, PaintBox,Bitmap і багато інших. Канва містить властивості і методи, що істотно спрощують графіку C++Builder.

Кожна точка канви має координати X і Y. Система координат канви, як і скрізь в C++Builder, має початком лівий верхній кут канви. Координата X зростає при переміщенні зліва направо, а координата Y - при переміщенні зверху вниз.

У канви є властивість Реn - перо. Це об'єкт, що у свою чергу має ряд властивостей:

- Color - колір, яким наноситься малюнок;

- Width - ширина лінії. Ширина задається в пікселах. По замовчуванню ширина дорівнює 1;

- Style - визначає вид лінії.

Наприклад, для задання кольору об’єкту спочатку необхідно визначити цей колір для властивості Pen:

Canvas->Pen->Color=clGreen; // призначено зелений колір для малювання

Ще одна властивість канви - Brush, вона визначає колір (Color) і стиль (Style) заливки області усередині фігури.

Для заливки об’єкта жовтим кольором необхідно прописати наступний код:

Form1->Canvas->Brush->Color = clYellow;

Для заштриховування замкнених об’єктів, необхідно обрати стиль штрихування у властивості Brush:

Canvas->Brush->Style = bsVertical;

Всього існує 9 стилів стандартних заштриховок:

Назва Тип заливки області
bsSolid Заливка кольором фона
bsClear Прозора заливка
bsHorizontal Горизонтальна штриховка
bsVertical Вертикальна штриховка
bsFDiagonal Пряма штриховка лініями під 45°
bsBDiagonal Зворотня штриховка лініями під 45°
bsCross Штриховка у клітинку
bsDiagCross Штриховка у клітинку під 45°
brushBmp По шаблону програміста

Графічні примітиви

Будь-яка картинка, креслення або схема можуть розглядатися як сукупність графічних примітивів: крапок, ліній, кіл, дуг і ін.

Викреслювання графічних примітивів на поверхні (форми або компоненту Image) здійснюється застосуванням відповідних методів до властивості Canvas цієї поверхні.

Графічні примітиви розділяють на дві групи: малювання контурів та площадні (з заливкою) фігури. До примітивів відносять: лінії (MoveTo, LineTo), прямокутники (Rectangle), дуги (Arc), еліпси (Ellipse), багатокутники (Poligon) та інші. До площадних фігур, що заливаються всередині, відносяться зафарбовані прямокутники (FillRect), еліптичні сектори (Pie). Якщо необхідно залити замкнену фігуру, це можна зробити за допомогою функцій зафарбовування – FloodFill, FillStyle.

Лінія

Викреслювання прямої лінії виконує метод LineTo. Метод малює лінію з тієї позиції, в якій в даний момент знаходиться олівець (ця позиція називається поточною позицією олівця або просто "поточною"), в позицію, координати якої вказані в інструкції виклику методу.

Наприклад, оператор:

Canvas->LineTo(100,200);

малює лінію в позиції з координатами (100, 200), після чого поточною стає позиція з координатами (100, 200).

Початкову позицію лінії можна задати, перемістивши олівець в потрібну точку графічної поверхні. Зробити це можна за допомогою методу MoveTo, вказавши як параметри координати позиції початку лінії. Наприклад, оператори

Canvas->MoveTo(10,10); // встановити олівець в позицію (10,10)

Canvas->LineTo(50,10); // лінія з позиції (10,10) в позицію (50,10)

малюють горизонтальну лінію з позиції (10, 10) в позицію (50, 10).

Ламана лінія

Метод Polyline викреслює ламану лінію. Як параметри методу передається масив типа TPoint, що містить координати вузлових точок лінії, і кількість ланок лінії. Метод Polyline викреслює ламану лінію, послідовно сполучаючи крапки, координати яких знаходяться в масиві: першу з другою, другу з третьою, третю з четвертою і т.д.

Наприклад, приведений нижче фрагмент коду малює ламану лінію, що складається з трьох ланок.

TPoint p[4]; // координати початку, кінця і точок перегину

// задати координати точок ламаної

р[0].х = 100; р[0].у = 100; // початок

р[1].х = 100; р[1].у = 150; // точка перегину

р[2].х = 150; р[2].у = 150; // точка перегину

р[3].х = 150; р[3].у = 100; // кінець

Canvas->Polyline(р,3); // ламана з трьох ланок

Метод Polyline можна використовувати для викреслювання замкнутих контурів. Для цього треба, щоб перший і останній елементи масиву містили координати однієї і тієї ж точки.

Прямокутник

Метод Rectangle викреслює прямокутник. У інструкції виклику методу треба вказати координати двох точок - кутів прямокутника.

Наприклад, оператор

Canvas->Rectangle(10,10, 50, 50);

малює квадрат, лівий верхній кут якого знаходиться в точці (10, 10), а правий ніжній в точці (50, 50).

Багатокутник

Метод Polygon викреслює багатокутник. Інструкція виклику методу в загальному вигляді виглядає так:

Canvas->Polygon(p, n);

де р - масив записів типу TPoint, який містить координати вершин багатокутника; n - кількість вершин.

Метод Polygon креслить багатокутник, сполучаючи прямими лініями крапки, координати яких знаходяться в масиві: першу з другою, другу з третьою, третю з четвертою і т.д. Вид межі багатокутника визначають значення властивості Реn, а вид заливки області, обмеженою лінією межі, - значення властивості Brush тієї поверхні, на якій метод малює.

Нижче приведений фрагмент коду, який, використовуючи метод Polygon, малює багатокутник.

TPoint points[5]; // визначення п’яти вершин

points[0] = Point(30,150);

points[1] = Point(40,130);

points[2] = Point(50,140);

points[3] = Point(60,130);

points[4] = Point(70,150);

Image1->Canvas->Polygon(points,4);

Коло і еліпс

Намалювати еліпс або коло (окремий випадок еліпса) можна за допомогою методу Ellipse. Інструкція виклику методу в загальному вигляді виглядає таким чином:

Canvas->Ellipse(xl,yl,x2, y2);

Параметри x1, y1, x2, y2 визначають координати прямокутника, усередині якого викреслюється еліпс або, якщо прямокутник є квадратом, - коло.

Дуга

Метод Arc малює дугу - частину еліпса (кола). Інструкція виклику методу в загальному вигляді виглядає так:

Canvas->Arc(x1,y1,x2,y2,x3,у3,х4,у4)

Параметри xl, y1, x2, y2 визначають еліпс (коло), частиною якого є дуга. Параметри х3 і у3 задають початкову, а х4 і у4 - кінцеву точку дуги. Початкова (кінцева) точка дуги - це точка перетину кордону еліпса і прямої, проведеного з центру еліпса в крапку з координатами х3 і у3 (х4, у4). Метод Arc викреслює дугу проти годинникової стрілки від початкової точки до кінцевої.

Сектор

Метод Pie викреслює сектор еліпса або круга. Інструкція виклику методу в загальному вигляді виглядає таким чином:

Canvas->Pie(xl,yl,x2,у2,х3,у3,х4,у4)

Параметри x1, y1, x2, y2 визначають еліпс (круг), частиною якого є сектор; х3, у3, х4 і у4 - прямі - межі сектора. Початкова точка меж співпадає з центром еліпса. Сектор вирізується проти годинникової стрілки від прямою, заданою точкою з координатами (х3, у3), до прямою, заданою точкою з координатами (х4, у4).

Текст

Виведення тексту (рядків типа Ansistring) на поверхню графічного об'єкту забезпечує метод TextOut. Інструкція виклику методу TextOut в загальному вигляді виглядає таким чином:

Canvas->TextOut(х,у,Текст)

Параметр Текст задає текст, що виводиться. Параметри х і у визначають координати точки графічної поверхні, від якої виконується виведення тексту.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...