Клас tcanvas - Глава 10

Този клас - на ядрото на графичната подсистема Delphi. Тя съчетава и "платно" (специфичен за устройството контекста на GDI), и "инструменти" (писалка, четка, шрифт), и дори "чираците" (набор от стандартни функции за изготвяне геометрични форми). Нека го наречем платно.

Платно не е компонент, но той присъства като имот в много други компоненти, които трябва да могат да се изготвят и показва никаква информация.

Читателите, запознати с графика на Windows, да се научат да TCanvas обектно-ориентиран обвивка около контекст устройство Windows (Context Device, окръг Колумбия). Дескриптори на устройството, върху които "построен" контур, може да се изисква за всички операции от ниско ниво. Той тръгва на имот:

имот Дръжка: HDC;

За да се направи контур включва шрифт, писалката и четката:

собственост на шрифта: TFont; имот Pen: TPen; имот с четка TBrush;

В допълнение, това е възможно да се направи и точка-мъдър от получаването на достъп до всеки пиксел. Цена на имота:

Пиксели собственост [X, Y: Integer]: TColor;

съответства на цвета на точка координати X, Y.

Необходимостта да се изготвят всяка точка възниква често. Все пак, ако се наложи да промените всички или поне много точки на изображението, имотът пиксели трябва незабавно да се изхвърли - така че е неефективен. Много по-бързо да редактирате изображението с помощта на свойствата на обектите scanLine TBitmap; Вижте по-долу.

Платно предоставя методи добавка за всички основни GDI Windows рисуване функции и свойства, които са изброени в таблицата. 10.4 и 10.5. Разглеждайки ги, имайте предвид, че всички геометрични форми, съставени от сегашната писалката. Тези, които могат да рисувам, боядисани с помощта на ток четката. Четка и писалка в същото време да има ток цвят.

Таблица 10.4. Клас Методи TCanvas

С този метод е възможно да се направи "ясна" картина. За да направите това, изберете подходящия цвят на фона четка и след това да го замени във фонов режим, или най-често срещаният цвят растерна графика (вж. Bitmap. TransparentColor)

нулира текущия шрифт, писалката и четката, да ги замени със стандартна назаем от Windows инсталации (черен химикал, HOLLOW_BRUSH, SYSTEM_FONT).

Има две събития за отговора потребител с промяната на платното:

имот OnChange: TNotifyEvent; имот OnChanging: TNotifyEvent;

Тези събития се случват, когато се променя свойствата и методите TCanvas повикването, промяна на изгледа на платно (М. Д. За всяка рисунка. В метод MoveTo, например, те не се случи). Разликата между тях е, че OnChanging събитие се нарича преди промяната, а OnChange случай - след тяхното приключване.

Идентификатор (код), съдържаща се в експлоатация растерни собственост при копиране на правоъгълен блок

От функциите, въведени през TCanvas клас, трябва да се отбележи подкрепа за изготвяне криви (полиноми) Безие. Тази първа възможност

Тя се появи в API Windows NT. За да се построи крива до минимум четири точки - начални, крайни и две подкрепа. кривата на втория ред ще бъде построен върху тях. Ако посочения масив от точки, те се използват за изграждане на последователни криви, последната точка на една кривина е първото за следващия завой.

Една добра илюстрация на TCanvas обект на използване може да служи като пример GraphEx, снабден с Delphi (папка \ Демота \ Doc \ GraphEx). само един има "но" - това е непроменен от версия 1.0 Delphi. Затова ние вършат работа за Borland програмисти. В нашия пример, ние обновен Toolbars - те се изпълняват на компонентите и TToolBar TControlBar; добавена поддръжка за JPEG файлове; и най-накрая добавя способността да изготвя Безие криви. Обновено поглед на главния примера форма GraphEx показано на фиг. 10.1.

Фиг. 10.1. Така че сега основната форма изглежда например GraphEx

Къде се намират на платното, на която да се направи и? Първо, тя разполага с всички потомци класове TGraphicControl и TCustomControl, т.е., почти всички визуални компоненти от компонентите палитри ..; включително форма. На второ място, на платното е растерна графика (TBitmap клас); можете да пишете и да не се направи от нулата, но в крайна изображение (по този въпрос, виж. по-долу в раздела. "а TBitmap клас" в тази глава). Но понякога трябва да се направи и дясно на екрана. В този случай е необходимо да се прибягва до използването на API функции. Getoc функция връща контекст устройство определен прозорец, ако тя се прехвърля на параметъра 0 - целия екран:

// Рисуване върху ScreenCanvas

Един пример за необходимостта от изготвяне на екрана - скрийнсейвърът програма екран (Скрийнсейвъри).

Кога и къде искате да се направи? Този въпрос не е риторичен, тъй като тя може да изглежда на пръв поглед.

В допълнение към графичните примитиви, като линии и форми, може да се постави върху изображението на платно приключи. За да ги опише създаден TGraphic клас.