Clasa tcanvas - Capitolul 10

Această clasă - subsistemul grafică de bază Delphi. Acesta combină și „pânză“ (contextul specific dispozitivului GDI) și „unelte“ (stilou, pensula, font), și chiar „ucenici“ (un set de funcții standard pentru desen forme geometrice). Să-l numim o pânză.

Canvas nu este o componentă, dar este prezent ca o proprietate în multe alte componente care trebuie să fie în măsură să se atragă și să afișeze informații.

Cititorii familiarizați cu grafica Windows, să învețe să înveliș orientat pe obiect TCanvas în jurul context dispozitiv Windows (dispozitiv de context, DC). Dispozitiv Descriptor peste care „a construit“ schiță, poate fi necesară pentru orice operațiuni de nivel scăzut. El stabilește o proprietate:

Mâner de proprietate: HDC;

Pentru a desena un contur include font, stilou și perie:

proprietate Font: TFont; proprietate Pen: tpen; proprietate Perie: TBrush;

În plus, este posibil să se tragă și punct înțelept prin obținerea accesului la fiecare pixel. Valoarea de proprietate:

Pixelii proprietate [X, Y: Integer]: TColor;

corespunde culorii punctului coordonatelor X, Y.

Necesitatea de a trage fiecare punct apare de multe ori. Cu toate acestea, dacă trebuie să modifice toate sau cel puțin mai multe puncte ale imaginii, proprietatea Pixelii trebuie să se debaraseze imediat - deci este ineficient. Mult mai repede pentru a edita imaginea utilizând proprietățile obiectului scanline TBitmap; A se vedea mai jos.

Canvas oferă metode add-on toate majore GDI pentru Windows desen funcții și proprietăți care sunt listate în tabel. 10.4 și 10.5. Luând în considerare acestea, ține cont de faptul că toate formele geometrice desenate de pen-ul curent. Cei care pot picta, pictat peste folosind pensula curent. Perie și stilou în același timp, au o culoare curent.

Tabelul 10.4. Metode Clasa TCanvas

Cu această metodă este posibil să se tragă o imagine „clară“. Pentru a face acest lucru, selectați culoarea corespunzătoare perie de fundal și apoi înlocuiți-l în fundal, sau cele mai frecvente bitmap culoare (a se vedea. Bitmap. TransparentColor)

resetează fontului curent, stilou și perie, înlocuindu-le cu standardul împrumutat de la instalațiile de Windows (BLACK PEN, HOLLOW_BRUSH, SYSTEM_FONT).

Există două evenimente pentru răspunsul utilizator la schimbarea de panza:

Proprietate onchange: TNotifyEvent; Proprietate OnChanging: TNotifyEvent;

Aceste evenimente au loc atunci când schimbă proprietățile și metodele de apel TCanvas, schimbarea punctul de vedere al pânză (m. E. Pentru fiecare desen. În metoda MoveTo, de exemplu, ele nu apar). Diferența dintre ele este că OnChanging eveniment este apelat înainte de modificare, iar evenimentul onchange - după finalizarea lor.

Identificator (cod) conținute în proprietatea operație raster când copiați bloc dreptunghiular

Dintre caracteristicile introduse în clasa TCanvas, trebuie remarcat sprijin pentru desen curbe (polinoame) Beziers. Această primă oportunitate

Acesta a apărut în API-ul Windows NT. Pentru a construi o curbă de la un minim de patru puncte - inițiale, finale și două sprijin. curba de ordinul al doilea va fi construit pe ele. În cazul în care șirul specificat de puncte, acestea sunt folosite pentru a construi curbe succesive, ultimul punct al unei singure curbe este prima pentru următoarea curbă.

O bună ilustrare a obiectului TCanvas utilizare poate servi ca exemplu GraphEx, furnizat cu Delphi (folderul \ Demos \ Doc \ GraphEx). doar un singur există „dar“ - este neschimbat de la versiunea Delphi 1.0. Prin urmare, noi facem munca pentru programatori Borland. În exemplul nostru, am actualizat Toolbars - acestea sunt executate pe componentele și TToolBar TControlBar; adăugat suport pentru fișiere JPEG; și în final se adaugă capacitatea de a desena curbe Bezier. aspect actualizat al principal exemplu forma GraphEx prezentată în Fig. 10.1.

Fig. 10.1. Deci, acum forma principală arată exemplu GraphEx

Unde găsești pânza pe care să atragă și? În primul rând, prevăzut cu toate descendenții claselor TGraphicControl și TCustomControl, adică, aproape toate componentele vizuale din componentele .. Vindem, paleti; inclusiv forma. În al doilea rând, panza este un bitmap (clasa TBitmap); puteți scrie și desena nu de la zero, ci în imaginea finală (în acest sens, a se vedea. de mai jos în secțiunea „Clasa TBitmap“ din acest capitol). Dar, uneori, trebuie să atragă și dreapta pe ecran. În acest caz, este necesar să se recurgă la utilizarea funcțiilor API. Funcția returnează Getoc fereastra specificat context dispozitiv în cazul în care acesta este transferat la parametrul 0 - întregul ecran:

// Desenam pe ScreenCanvas

Un exemplu de necesitatea de a desena pe ecran - protectorul de ecran de program (economizoare de ecran).

Când și în cazul în care doriți să atragă? Această întrebare nu este retorică, așa cum ar putea părea la prima vedere.

În plus față de primitivele grafice, cum ar fi linii și forme, pot fi plasate pe imaginea panza terminat. Pentru a le descrie creat clasa TGraphic.