HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Canvas zárolása


Canvas objektum 9. rész

Példaprogram letöltése

43873 bájt

A sorozat eddigi részeiben a TCanvas osztály szinte összes metódusát és property-jét átnéztük, azonban még kimaradt néhány speciális eljárás. Ezekről lesz szó ebben a cikkben.
A több szálon futó alkalmazásoknál a Lock metódussal megakadályozhatjuk, hogy más szálak is módosítsák a Canvas-t. A letiltás egészen addig tart, amíg meg nem hívjuk az UnLock metódust. A Lock metódus többszöri meghívása növeli a LockCount property értékét. A zárás feloldása akkor történik meg, amikor annyiszor meghívjuk az UnLock eljárást, amennyiszer előtte a Lock-ot. Ha egy külön szálon futó eljárás módosítja a Canvast, akkor ajánlatos használnia a Lock eljárást, ellenkező esetben hibák léphetnek fel. Ez viszont befolyásolja a teljesítményt, tehát ha biztosak vagyunk benne, hogy egy másik szál, vagy maga az alkalmazás nem módosítja ugyanazt a Canvas-t, akkor nem feltétlenül szükséges a használata.
A Lock eljárás növeli a LockCount property értékét, viszont van még egy lehetőség a Canvas zárolására. Ez a TryLock függvény. Ez Lock-olja a Canvas-t, de csak abban az esetben, ha ez még nem volt megtéve. Ebben az esetben a LockCount értékét 1-re állítja, és igaz értékkel tér vissza. Ellenkező esetben nem történik semmi, tehát a LockCount property értéke változatlan marad, és a függvény hamis értékkel tér vissza.

A TCanvas osztálynak van két eseménye, amiket felhasználhatunk munkánk során. Az egyik az OnChanging esemény, ami a kép megváltozása előtt, a másik pedig az OnChange, ami a kép megváltozása után következik be. Először tehát létrejön az OnChanging esemény, megváltozik a kép a Canvas-on, ezután pedig bekövetkezik az OnChange esemény.
procedure CanvasChange(Sender. TObject);
...
Canvas.OnChange:=CanvasChange;

A ClipRect property egy TRect struktúrában visszaadja annak a területnek a koordinátáit, amelyen kívül eső pixelek nem jelennek meg. Ez a property jól használható a teljesítmény növelésére, mivel megtudjuk belőle, hogy hová nem érdemes rajzolni, mert úgysem jelenik meg. Az aktuális érték kiolvasása történhet az OnChange eseményben, mivel ekkor biztos, hogy pontos értékeket kapunk.


Cikksorozat

#IDKategóriaCikk címeSorozat
1166DelphiOsztály hierarchia lekérdezése1. rész
1180DelphiOsztály hierarchia lekérdezése2. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 561. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |