Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция-9.doc
Скачиваний:
8
Добавлен:
20.02.2016
Размер:
119.3 Кб
Скачать

VI.Клас tBrush

Об'єкти класу TBrush (пензля) служать для заповнення внутрішнього простору замкнутих фігур.

Властивості класу:

property Bitmap:TBitmap; Містить растове зображення, що буде використовуватися пензлем для заповнення. Якщо ця властивість визначена, властивості Color і Style ігноруються.

property Color: TColor; Колір пензля

property Handle: Integer; Дескриптор пензля. Використовується при безпосередньому звертанні до API-функцій Windows.

property Style: TBrushStyle; Стиль пензля

Стилі пензля

VII.Клас tCanvas.

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

Розглянемо декілька методів даного класу.

Procedure Ellipse(X1,Y1,Х2,Y2:Integer); Креслить еліпс у прямокутнику, що охоплює, (X1,Y1)-(X2,Y2). Заповнює внутрішній простір еліпса поточним пензлем.

Procedure FloodFill(X,Y:Integer; Color:TColor; FillStyle:TFillStyle); Робить заливку канви поточним пензлем. Заливка починається з точки (X,Y) і поширюється в - усі сторони від її. Якщо FillStyle=fsSurfасе, заливка поширюється на всі сусідні точки з кольором Color. Якщо FillStyle=fsBorder, навпаки, заливка припиняється на точках із цим кольором.

Procedure LineTo(X,Y:Integer); Креслить лінію від поточного положення пензля до точки (X,Y).

Procedure MoveTo (X,Y: Integer); Переміщає пензель в положення (X,Y) без креслення ліній.

Procedure Rectangle(X1,Y1,X2,Y2:Integer); Вичерчує і заповнює прямокутник (X1,Y1)- (X2,Y2). Для креслення без заповнення використовуйте FrameRect або Polyline.

VIII.Області.

На жаль, у клас TCanvas не включена ще одна образотворча можливість Windows - області (Regions). Області - такі ж графічні об'єкти, як ручку, пензель, шрифт. Вони утворяться за допомогою комбінації найпростіших геометричних фігур - прямокутників, багатокутників, еліпсів. Чудовою особливістю областей є можливість створення з їхньою поміччю не прямокутних кнопок, колірних областей, вікон.

Основні функції для роботи з областями.

Function CombineRgn(DestRgn, Rgn1, Rgn2: Cardinal; CombineMode: Ineger): Integer; Об'єднує дві області в одну: DestRgn - дескриптор результуючої області; Rgn1, Rgn2 - дескриптори що об'єднуються областей; CombineMode - параметр, що вказує засіб об'єднання.

Function CreateEllipticRgn(x1, y1, x2, y2: Integer): Cardinal; Створює еліптичну область.

Function CreatePolygonRgn(var Points; Count, PolyFillMode: Integer): Cardinal; Створює область у виді багатокутника: Points - масив координат усіх вершин багатокутника; Count - кількість вершин; PolyFillMode - режим заповнення багатокутника.

Function CreateRectRgn(x1,y1,x2,y2:Integer):Cardinal; Створює прямокутну область.

Function CreateRoundRectRgn (x1,y1,x2,y2,x3,y3 :integer):Cardinal; Створює область з округленими кутами.

Function EqualRgn(Rgn1, Rgn2: Cardinal): Bool; Перевіряє еквівалентність двох областей.

Function FillRgn(DC, Rgn, Brush: Cardinal): Bool; Зафарбовує область пензлем: DC-дескриптор канви вікна; Rgn-дескриптор області; Brush-дескриптор пензля.

Function FrameRgn(DC, Rgn, Brush: Cardinal; Width, Height: integer):Bool; Обводить (але не заповнює) область пензлем висотою Height і шириною Width пікселів.

Function InvertRgn (DC, Rgn: Cardinal):Bool; Інвертує всі пікселі усередині області.

Function OffsetRgn(DC, Rgn: Cardinal; dx, dy: Integer): Integer; Зміщає область dx по горизонталі і на dy по вертикалі.

Function PaintRgn(DC, Rgn: Cardinal): Bool; Зафарбовує область поточним пензлем.

Function PtInRegion (Rgn: Cardinal; x, y: Integer): Bool; Перевіряє приналежність точки (X,Y) області Rgn.

Function RectInRRegion(Rgn: Cardinal; Rect: Trect): Bool; Перевіряє приналежність прямокутника Rect області Rgn.

Function SetWindowRgn (DC, Rgn: Carrdinal; Redraw: Bool):Integer; Показує приналежному вікну з канвою DC область Rgn замість вікна; Redraw - дозволяє/забороняє перемалювання області. Усі частини вікна, що не ввійшли в область, не показуються.

Приклад нестандартного вікна.

Var

Rgn:Cardinal;

Begin

Rgn:=Form1. Canvas. CreateEllipticRgn(0,0,50,50);

Form1. Canvas. SetWindowRgn(Handle, Rgn, True);

End;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]