Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Клас TCanvas






Цей клас створює «канву», на якій можна малювати пером, пензлем і шрифтом. Об'єкти класу TCanvas автоматично створюються для всіх видимих компонентів, що повинні вміти намалювати себе. Вони інкапсулюють об'єкти Font, Pen, Brush, а також методи, що використовують ці об'єкти.

Таблиця 1.5. Властивості класу TCanvas

Font: TFont; Об'єкт-шрифт
Pen: TPen; Об'єкт-перо
Brush: TBrush; Об'єкт-пензель
PenPos: TPoint; Визначає поточне положення пера в пікселях щодо лівого верхнього кута канви
Pixels [X, Y: Integer]: TColor; Масив пікселів канви
CopyMode: TCopyMode; Установлює спосіб взаємодії растрового зображення з кольором фону
ClipRect: TRect; Визначає поточні розміри області, яка потребує промальовування
Handle: Integer; Дескриптор канви. Використовується при безпосередньому звертанні до API -функцій Windows
LockCount: Integer; Лічильник блокувань канви. Збільшується на одиницю при кожному звертанні до методу Lock і зменшується на одиницю при звертанні до UnLock

 

Властивість СopyMode використовується при копіюванні частини однієї канви (джерела) в іншу (приймач) методом CopyRect і може мати одне з наведених у табл. 1.6 значень.

 

Таблиця 1.6. Значення властивості СopyMode

cmSrcCopy Копіює зображення джерела на канву
cmBlackness Заповнює область малювання чорним кольором
cmWhitness Заповнює область малювання білим кольором
cmDestInvert Заповнює область малювання інверсним кольором фону
cmNotSrcCopy Копіює на канву інверсне зображення джерела
cmSrcAnd Поєднує зображення джерела і канви за допомогою операції AND
cmSrcErase Інвертує зображення на канві та поєднує результат із зображенням джерела операцією AND
cmNotSrcErase Поєднує зображення на канві та зображення, що копіюється, операцією OR й інвертує отримане
cmSrcInvert Поєднує зображення на канві та джерело операцією ХОR
cmSrcPaint Поєднує зображення на канві та джерело операцією ОR
cmMergeCopy   Поєднує зображення на канві та зображення, що копіюється, операцією AND
cmMergePaint Поєднує зображення на канві та зображення, що копіюється, операцією OR
cmPatCopy Копіює зразок джерела
cmPatInvert Комбінує зразок джерела з зображенням на канві за допомогою операції ХОR
cmPatPaint Комбінує зображення джерела з його зразком за допомогою операції OR, потім отримане поєднується з зображенням на канві також за допомогою OR

 

За допомогою властивості Pixels усі пікселі канви подаються у вигляді двовимірного масиву точок. Змінюючи колір пікселів, можна промальовувати зображення окремими точками.


Таблиця 1.7. Методи класу TCanvas

procedure MoveTo (X, Y: Integer); Переміщує перо в положення (X, Y) без креслення ліній
procedureLineTo (X, Y: Integer); Креслить лінію від поточного положення пера до точки (X, Y)
procedureArc (XI, Yl, X2, Y2, Х3, Y3, Х4, Y4: Integer); Креслить дугу еліпса в описаному прямокутнику (XI, Y1) – (X2, Y2). Початок дуги лежить на перетині еліпса і проміня, проведеного з його центра через точку (Х3, Y3), а кінець – на перетині з променем, проведеним з центра через точку (Х4, Y4). Дуга креслиться проти годинникової стрілки
procedure Chord (X1, Yl, X2, Y2, Х3, Y3, Х4, Y4: Integer);   Креслить сегмент еліпса в описаному прямокутнику (XI, Y1) - (X2, Y2). Початок дуги сегмента лежить на перетині еліпса та променя, проведеного з його центра через точку (Х3, Y3), а кінець – на перетині з променем, проведеним з центра через точку (Х4, Y4). Дуга сегмента креслиться проти годинникової стрілки, а початкова і кінцева точки дуги з'єднуються прямою
procedurePie (X1, Yl, X2, Y2, Х3, Y3, Х4, Y4: Integer); Креслить сектор еліпса в описаному прямокутнику (X1, Y1) - (X2, Y2). Початок дуги лежить на перетині еліпса та променя, проведеного з його центра через точку (Х3, Y3), а кінець – на перетині з променем, проведеним з центра через точку (Х4, Y4). Дуга креслиться проти годинникової стрілки. Початок і кінець дуги з'єднуються прямими з її центром
procedure Ellipse(X1, Y1, X2, Y2: Integer);   Креслить еліпс в описаному прямокутнику (X1, Y1) - (X2, Y2). Заповнює внутрішній простір еліпса поточним пензлем
procedure FrameRect (const Rect: TRect); Окреслює границі прямокутника Rect поточним пензлем товщиною в 1 піксель без заповнення внутрішньої частини

Продовження табл. 1.7

procedure Rectangle (X1, Y1, X2, Y2: Integer); Креслить і заповнює прямокутник (X1, Y1) - (X2, Y2). Для креслення без заповнення використовуйте FrameRect або Polyline
procedure FillRect (const Rect: TRect); Заповнює поточним пензлем прямокутну область Rect, включаючи її ліву і верхню межі, але не торкаючись правої та нижньої меж
procedure RoundRect (X1, Yl, X2, Y2, X3, Y3: Integer); Креслить і заповнює прямокутник (X1, Y1) - (X2, Y2) з округленими кутами. Прямокутник (X1, Y1) - (X3, Y3) визначає дугу еліпса для закруглення кутів
procedure Polygon (Points: Array of TPoint); Креслить пером багатокутник за допомогою точок, заданих у масиві Points. Кінцева точка з'єднується з початковою, і багатокутник заповнюється поточним пензлем. Для креслення без заповнення використовується Polyline
procedure Polyline (Points: Array of TPoint); Креслить пером ламану пряму за допомогою точок, заданих у масиві Points
procedure FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle); Заливає канву поточним пензлем, починаючи з точки (X, Y) і поширюється в усі сторони від неї. Якщо FillStyle=fsSurface, заливання поширюється на всі сусідні точки з кольором Color. Якщо FillStyle=fsBorder, навпаки, заливання припиняється на точках з цим кольором
procedure Draw(X, Y: Integer; Graphic: TGraphic); Промальовує графічний об'єкт Graphic так, щоб лівий верхній його кут розташувався в точці (X, Y)
procedureDrawFocusRect (const Rect: TRect);   Промальовує прямокутник за допомогою операції XOR, тому повторне малювання знищує раніше накреслений прямокутник. Використовується, здебільшого, для промальовування нестандартних інтерфейсних елементів при одержанні ними фокуса введення і при втраті його
procedure StretchDraw (const Rect: TRect; Graphic: TGraphic); Креслить і за необхідності масштабує графічний об'єкт Graphic так, щоб він цілком збігся з прямокутником Rect
procedure CopyRect (Dest: TRect; Canvas: TCanvas; Source: TRect); Копіює зображення Source канви Canvas у ділянку Dest поточної канви. При цьому різноманітні спеціальні ефекти досягаються за допомогою властивості CopyMode
procedure Refresh; Установлює в канві шрифт, перо і пензель за замовчуванням

Закінчення табл. 1.7

 

function TextExtent (const Text: String): TSize; Повертає ширину і висоту прямокутника, що охоплює текстовий рядок Text
function TextHeight (const Text: String): Integer; Повертає висоту прямокутника, що охоплює текстовий рядок Text
function TextWidth (const Text: String): Integer; Повертає ширину прямокутника, що охоплює текстовий рядок Text
procedure TextOut(X, Y: Integer; const Text: String); Виводить текстовий рядок Text так, щоб лівий верхній кут прямокутника, що охоплює текст, розташовувався в точці (X, Y)
procedure TextRect (Rect: TRect; X, Y: Integer; const Text: String); Виводить текстовий рядок Text так, щоб лівий верхній кут прямокутника, що охоплює текст, розташовувався в точці (X, Y). Якщо при цьому яка-небудь частина напису виходить за межі прямокутника Rect, вона відтинається і стає непомітною
procedure Lock; Блокує канву в багатопотокових додатках для запобігання використання канви в інших потоках команд
functionTryLock: Boolean;   Намагається заблокувати канву. Якщо канва не була заблокована іншим потоком команд, повертає True, у протилежному випадку нічого не робить і повертає False
procedure Unlock; Зменшує на одиницю значення лічильника блокування канви
procedure BrushCopy (const Dest: TRect; Bitmap: TBitmap; const Source: TRect; Color: TColor); Копіює частину зображення Source на ділянку канви Dest. Color указує колір у Dest, що повинний замінятися на колір пензля канви. Метод уведений для сумісності з ранніми версіями Delphi. Замість нього варто користуватися класом TImageList

1.5. Класи TGraphic і TPicture

TGraphic – це абстрактний клас, що інкапсулює загальні властивості й методи своїх нащадків, таких як піктограми (TIcon), метафайл (TMetafile), растрове зображення (TBitmap), а також TClipboard, TYPEGImage, TOLEGraphic, TPicture і т.ін. Зазвичай нащадки зберігаються у файлах визначеного формату. Піктограми – це невеликі растрові зображення з регульованою їхньою прозорістю (.ICO). Метафайл – це зображення, побудоване на графічному пристрої за допомогою спеціальних команд (. WMF або. EMF). Растрові зображення – це довільні графічні зображення (. BMP).

Таблиця 1.8. Властивості класу TGraphic

Empty: Boolean; Містить True, якщо з об'єктом не пов'язане графічне зображення
Height: Integer; Містить висоту зображення в пік селях
Modified: Boolean; Містить True, якщо графічний об'єкт змінювався
Palette: HPALETTE; Містить палітру кольорів графічного об'єкту
PaletteModified: Boolean; Містить True, якщо змінювалася палітра кольорів графічного об'єкту
Transparent: Boolean; Містить True, якщо об'єкт прозорий для фону, на якому він зображений
Width: Integer; Містить ширину зображення в пікселях

 

Таблиця 1.9. Методи класу TGraphic

procedureLoadFromClipboardFormat (AFormat: Word; AData: THandle; APalette: HPALETTE); Шукає в буфері міжпрограмного обміну Clipboard зареєстрований формат AFormat і, якщо формат знайдений, завантажує з буфера зображення AData і його палітру APalette
procedure LoadFromFile (const FileName: String); Завантажує зображення з файлу FileName
procedureSaveToClipboardFormat (Var AFormat: Word; var AData: THandle; var APalette: HPALETTE); Розташовує графічне зображення AData і його палітру кольорів APalette у буфері міжпрограмного обміну у форматі AFormat
procedure LoadFromStream (Stream: TStream); Завантажує зображення з потоку даних Stream
procedure SaveToFile (const FileName: String); Зберігає зображення у файлі FileName  
procedure SaveToStream (Stream: TStream); Зберігає зображення в потоці Stream

 

Клас TPicture інкапсулює у собі все необхідне для роботи з готовими графічними зображеннями – піктограмою, метафайлом, растром або картинкою користувача. Його властивість Graphic може містити об'єкт кожного з цих типів, забезпечуючи потрібний поліморфізм методів класу.

Таблиця 1.10. Властивості класу TPicture

Bitmap: TBitmap; Інтерпретує графічний об'єкт як растрове зображення
Graphic: TGraphic; Містить графічний об'єкт
Height: Integer; Містить висоту зображення в пікселях
Icon: ТIcon; Інтерпретує графічний об'єкт як піктограму
Metafile: TMetafile; Інтерпретує графічний об'єкт як метафайл
Width: Integer; Містить ширину зображення в пікселях

 

Таблиця 1.11. Методи класу TPicture

procedure Assign(Source: TPersistent); Зв'язує власний графічний об'єкт Graphic з об'єктом Source
procedure LoadFromClipboardFormat (Format: Word; AData: THandle; APalette: HPALETTE); Шукає в буфері міжпрограмного обміну Clipboard зареєстрований формат AFormat і, якщо формат знайдений, завантажує з буфера зображення AData і його палітру APalette
procedure LoadFromFile(const FileName: String); Завантажує зображення з файлу FileName
class procedure RegisterClipboardFormat (AFormat: Word; AGraphicClass: TGraphicClass); Використовується для реєстрації в Clipboard нового формату зображення
class procedure RegisterFileFormat (const AExtension, ADescription: String; AGraphicClass: TGraphicClass); Використовується для реєстрації нового файлового формату
class procedure RegisterFileFormatRes(const AExtension: String; ADescriptionResID: Integer; AGraphicClass: TGraphicClass); Використовується для реєстрації нового формату ресурсного файлу
procedureSaveToClipboardFormat (var AFormat: Word; var AData: THandle; var APalette: HPALETTE); Розташовує графічне зображення AData і його палітру кольорів APalette у буфері міжпрограмного обміну у форматі AFormat
procedure SaveToFile(const FileName: String); Зберігає зображення у файлі FileName
class function SupportsClipboardFormat (AFormat: Word): Boolean; Повертає True, якщо формат AFormat зареєстрований у буфері міжпрограмного обміну Clipbord
class procedure UnregisterGraphicClass (AClass: TGraphicClass); Робить недоступними будь-які графічні об'єкти класу Aclass

2. ПРИКЛАДИ ВИКОРИСТАННЯ
ГРАФІЧНОГО ІНСТРУМЕНТАРІЮ

 

Розглянемо фрагменти програм, що ілюструють використання інструментів (шрифту, пера і пензля) графічного пристрою DC (Device Context) і основних методів класу TCanvas.

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал