Class tcanvas - 10. fejezet

Ez az osztály - a mag grafikus alrendszer Delphi. Egyesíti és a „vászon” (a GDI eszköz-specifikus kontextusban), és a „eszközök” (toll, ecset, font), és még a „inasok” (egy sor standard funkciókat rajz geometriai formák). Nevezzük a vásznon.

Canvas nem része, de jelen van a tulajdonság sok más alkatrészek, amelyeket meg kell tudnia készíteni maguknak, és megjeleníti semmilyen információt.

Olvasók ismeri a Windows grafikus, megtanulják, hogy TCanvas objektum-orientált köré burkolatot Windows eszköz keretében (Device Context, DC). Eszköz-leírás, amely felett „beépített” vázlat, szükség lehet olyan alacsony szintű műveletek. Azt állítja a tulajdonság:

ingatlan Fogantyú: HDC;

Felhívni vázlatát tartalmazza a betűtípust, toll és ecset:

ingatlan Font: Tfont-ot; ingatlan Pen: TPEN; ingatlan Brush: TBrush;

Ezen kívül lehetőség van, hogy dolgozzon, és pont-onkénti hozzáférjenek minden egyes pixel. Tulajdonság Érték:

tulajdonság pixel [X, Y: egész szám]: TColor;

megfelel a pont színe koordináták X, Y.

Az igény, hogy dolgozzon minden ponton merül fel gyakran. Azonban, ha módosítani kell az összes, vagy legalábbis sok pontot a kép, a pixel tulajdon azonnal dobja - így hatástalan. Sokkal gyorsabb, szerkeszteni a képet objektumtulajdonságokból scanline TBitmap; Lásd alább.

Vászon eljárásokat biztosít add-on az összes jelentősebb GDI Windows-rajz funkciók és tulajdonságok, amelyek szerepelnek a táblázatban. 10.4 és 10.5. Annak megítélésében őket, tartsa szem előtt, hogy minden geometriai alakzatokat rajzolt a jelenlegi tollat. Aki tud festeni, átfestették az aktuális ecsettel. Ecset és toll ugyanakkor van egy aktuális színt.

10.4 táblázat. Osztály módszerek TCanvas

Ezzel a módszerrel meg lehet rajzolni egy „tiszta” képet. Ehhez válassza ki a megfelelő háttér ecset színe, majd cserélje ki a háttérben, vagy a leggyakoribb szín bitmap (lásd. Bitmap. TransparentColor)

visszaállítja az aktuális betűtípust, toll és ecset, helyettük szabványos kölcsönzött a Windows telepítés (fekete toll, HOLLOW_BRUSH, SYSTEM_FONT).

Két esemény a felhasználó választ a változás a vásznon:

ingatlan OnChange: TNotifyEvent; ingatlan OnChanging: TNotifyEvent;

Ezek az események fordulnak elő, amikor a változó a tulajdonságok és módszerek TCanvas hívást, a változó a nézet a vászon (m. E. Minden rajz. A MoveTo módszer, például, hogy nem fordul elő). A különbség köztük az, hogy OnChanging eseményt nevezzük, mielőtt a változás, és a OnChange esemény - a befejezés után.

Azonosító (kód) tartalmazó raszteres műveleti tulajdonságok másolása közben a téglatest

A bevezetett szolgáltatások TCanvas osztály, meg kell jegyezni, támogatása rajz görbék (polinomok) Beziers. Ez az első alkalom

Úgy tűnt, az API Windows NT. A konstrukció egy görbét, hogy legalább négy pontot - a kezdeti, a végső és a két támogatási. a görbe a másodrendű épül rájuk. Ha a megadott Pontsorozatokban, használják őket, hogy építsenek egymás utáni görbét, az utolsó pont egy görbe az első a következő görbe.

Egy jól illusztrálja a használat TCanvas objektum szolgálhat például GraphEx, mellékelt Delphi (mappa \ Demos \ doc \ GraphEx). Csak egy „de” - ez nem változott a verzió Delphi 1.0. Ezért ezt a munkát Borland programozók. A mi példánkban korszerűsített Eszköztárak - végrehajtás az alkatrészek és TToolBar TControlBar; hozzáadott támogatása JPEG fájlokat; és végül hozzá a képessége, hogy dolgozzon Bezier görbék. Frissített megjelenés a fő formája GraphEx ábrán látható példa. 10.1.

Ábra. 10.1. Tehát most a fő formája úgy néz ki, például GraphEx

Hol találja a vászon, amin kell felhívni, és? Először is, amennyiben minden leszármazottai osztályok TGraphicControl és TCustomControl, azaz majdnem minden vizuális komponenseket a paletta elemek ..; beleértve formában. Másodszor, a vászon egy bittérkép (TBitmap osztály); írhatunk és felhívni nem a semmiből, de a végső kép (lásd erről. alább ebben a szakaszban. „Egy TBitmap Class” ebben a fejezetben). De néha meg kell hívni, és jobbra a képernyőn. Ebben az esetben meg kell, hogy vegye igénybe az API funkciókat. Getoc függvény a készülék összefüggésben megadott ablak, ha átkerül a paraméter 0 - a teljes képernyőt:

// Döntetlen ScreenCanvas

Egy példa, hogy meg kell rajzolni a képernyőre - a program képernyőkímélő (Képernyővédők).

Mikor és hol szeretné, hogy dolgozzon? Ez a kérdés nem költői, mint amilyennek látszik első pillantásra.

Amellett, hogy a grafikus primitívek, mint a vonalak és formák, lehet helyezni a vásznon kész képet. Leírni őket létre TGraphic osztályban.