русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Загальні положення


Дата додавання: 2014-11-27; переглядів: 900.


Можливості графіки в системі Delphiреалізовані через так званий де­скриптор контексту графічного пристрою DC і три його інструменти -шрифт, перо, пензель. Відповідно до цього в Delphiстворені класи, що дають змогу використовувати графічні інструменти Windows: для контекс­ту - клас TCanvas, для шрифту - TFont, для пера - ТРеп, для пензля --TBrush. Пов'язані з цими класами об'єкти автоматично створюються для всіх видимих елементів і стають доступними "через властивості Canvas, Font, Pen, Brush.

Canvas(канва, полотно) - це площа видимого елемента, на якій мож­на малювати. Вона є однією з властивостей видимого елемента, Font, Penта Brushє підвластивостями в Canvas.

Pen (перо) - це лінія, яка виділяє зовнішній контур фігури. Можна задавати товщину, колір, вигляд (тип) такої лінії.

Brush(пензель) - це площина фігури, тобто внутрішня від контура частина. Можна задавати колір площини фігури та спосіб зафарбовування, наприклад, горизонтальними чи діагональними лініями.

Font-• використовують для вибирання шрифтів, які застосовують під час виведення тексту за допомогою методів TextOut або TextRect об'єкта Canvas.

У процесі розробки проекту властивість Canvasнедоступна у вікні Object Inspector.Щоб використати Canvas,треба писати оператори, які присвоюють властивостям Canvasнеобхідні значення та викликають ме­тоди Canvas.Наприклад, щоб намалювати на формі голубий прямокутник, заповнений жовтими діагональними штрихами, треба ввести в опрацюван­ня події форми OnPaintтакі оператори:

With Canvas do {малюватимемо на полотні форми}

begin

Pen.Color:=clBlue; {колір ліній-'- Голубий}

Brush.Color:=clYellow; {колір зафарбовування - жовтий}

Brush.Style:=bsDiagCross; {спосіб зафарбовування -

діагональні лінії} Rectangle(10,10,100,100);

end;

Не всі компоненти мають властивість Canvas,наприклад, її не мають панелі - компоненти типу ТРапеІ. Однак і на таких компонентах можна малювати, розмістивши на них спеціальну компоненту типу TPaintBox, яка власне і призначена для малювання. Крім того, об'єкти PaintBox можна використовувати для обмеження на формі чи на деякій компоненті ділянки малювання одним чи декількома прямокутниками. Коротка характеристика властивостей та методів Клас ТРеп:

Color - колір лінії;

Width- товщина лінії в пікселях;

Style - стиль (зображення) лінії;

Mode- метод малювання лінії, тобто спосіб накладання кольору

лінії на поверхню. Клас Tj3rush:

Color- колір зафарбовування;

Style - спосіб зафарбовування внутрішньої площини фігури. Клас TFont;

Name- назва шрифту, наприклад, АгіаІ;

Style- стиль шрифту: грубий, курсив, підкреслений, перекреслений; Color- колір шрифту; Size- розмір шрифту в пунктах. Клас TCanvas:

Pen, Brush, Font-визначено вище;

Pixelsт двовимірний масив точок для доступу до окремих пікселів

об'єкта Canvas.

Крім того, є низка методів для малювання різноманітних фігур:» Arc, Chord, Ellipse, LineTo, FillRect, Draw, Polygon, Rectangle тощо.

Приклад 1. Вивчити можливості малювання ліній та фігур'у гра­фічній підсистемі Delphi -стилі та кольори ліній, кольори та способи за­фарбовування площини фігур. Малювати на формі, яка не містить жодних компонент, у процедурі опрацювання події форми OnPaint.

Наприклад, створити таку композицію'малюнка та геометричних фі­гур, як показано на рис.1

 

Рис.1 Приклад графічної композиції

Нижче наведено приклад реалізації цього завдання. Варто звернути ува­гу на спосіб, за~яким на форму можна виводити готові' Малюнки- фотографії, схеми тощо, підготовлені попередньо в Bmp-файлах. Фотографія, зображена на рис.1, була зісканована та переписана у файл у форматі Вmр.

unit Unitl;

interface uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type

TForml= class(TForm)

procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject);

private (Private declarations}

gr: TBitmap; {для запам'ятовування малюнка з файлу}

public

{Public declarations) end;

var

Forml: TForml;

implementation

{$R*.DFM}

procedure TForml:.FormPaint(Sender: TObject) ;

{метод виконується у випадку„кожного перемальовування

форми}

var

a: integer; R: TRect;

begin

With Canvas do :

begin

Pen.Color:=clBlue; {спочатку визначаємо кольори та.

стиль зафарбовування} Brush.Color:=clYellow; Brush.Style:=bsDiagCross; ,

for a:=l to 5 do {малюємо п'ять прямокутників, визначаючи їхнє розташування та розміри}

Rectangle((а-І)*100+10,25,а*100,115); Brush.Style:=bsSolid; '{тепер змінюємо стиль, не

змінюючи кольорів}

for a:=l to 5 do {малюємо п'ять еліпсів}

Ellipse((а-1)*100+10,140,а*100,200); {вивести в нижній частині форми готовий малюнок}

.R.Left:=30; R.Right:=370;

R.Top:=220; R.Bottom:=450;

StretchDraw(R,gr); {цей метод переносить малюнок у межі

заданого прямокутника R}

end;

end;

procedure TForml.FormCreate(Sender: TObject); {метод виконується один раз під час першого створення

форми)

begin

gr:=TBitmap.Create; (створюємо об'єкт для картинки} //і завантажуємо файл з картинкою з поточного каталогу

gr.LoadFromFile('Univerl.bmp'); {для завантаження є готовий метод}

end;

procedure TForml.FormDestroy(Sender: TObject) ;

(метод виконується один раз під час остаточного закриття форми - закінчення роботи}

begin

gr.Free; //вивільнити пам'ять у разі закінчення роботи

end;

end.

Приклад 2 (для самостійного виконання). Придумати та вивести на форму складніший малюнок, який би складався з геометричних фігур. Фі­гури зафарбовувати різними кольорами та способами. Для цього треба переглянути довідкову систему Delphi і відшукати там перелік назв кольо­рів, стилів ліній, способів зафарбовування, а також перелік методів Canvas для безпосереднього малювання.

Приклад 3 (для самостійного виконання). Підібрати три готові Bmp-файли. Розташувати на формі шість кнопок - по дві на кожен Втр-файл. У разі натискання на одну кнопку картинка з Bmp-файлу повинна ви­водитися на форму, а внаслідок натискання на іншу - стиратися. Картинки повинні виводитися незалежно одна від одної.

Приклад 4 (для самостійного виконання). Розділивши умовно фор­му приблизно навпіл, розташувати на ній дві компоненти типу TPaintBox. Малювати не на формі безпосередньо, а на об'єктах PaintBox. На кожному з двох таких об'єктів виконувати малювання після клацання на цьому об'єкті мишкою (подія OnClick). У разі подвійного клацання на об'єкті (подія OnDblClick) малюнок повинен стиратися.


<== попередня лекція | наступна лекція ==>
Використовування динамічних списків. | Побудова та перегляд графіків функції


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн