|
|
Képek torzítása, színek keverése
GDI 3. rész
|
|
Példaprogram letöltése
19608 bájt
|
A cikksorozat soron következő részében megnézzük, hogy hogyan tudunk egy tetszőleges képet egy általunk meghatározott paralelogramma alakzatban megjeleníteni, valamint az összes eddig nem tárgyalt, a TRect típussal kapcsolatos függvényt.
Mindenekelőtt a PatBlt függvényt tárgyaljuk meg, aminek tulajdonképpen a jelentősége nem túl nagy, de bizonyos esetekben jól használható.
A függvénynek a következő paraméterei vannak:
DC: a cél bitkép Canvas-ának azonosítója (pl. Image1.Canvas.Handle).
X, Y: a célterület X és Y koordinátái.
Width, Height: a célterület szélessége és magassága.
Rop: annak a logikai műveletnek kódja, amit a célterület pixeleivel el kell végezni. Ezek a következők lehetnek:
- PATCOPY: a beállított mintát másolja a célterületre.
- PATINVERT: a minta és a célterület pixelei között XOR műveletet végez.
- DSTINVERT: invertálja a célterületet.
- BLACKNESS: a célterület pixelei fekete színűek lesznek.
- WHITENESS: a célterület pixelei fehér színűek lesznek.
A bevezetőben említettük, hogy lehetőségünk van egy tetszőleges bitképet paralelogramma alakzatban megjeleníteni. A függvény, amivel ezt megtehetjük a PlgBlt, sajnos ez csak Windows NT operációs rendszer esetén használható.
A függvény paraméterei a következők:
- hdcDest: a cél bitmap Canvas-ának azonosítója.
- lpPoint: egy TPoint tömb, amelynek három eleme lehet. A három pont egy háromszöget határoz meg. A háromszög három pontja a kép egy-egy sarkához tartozik. Az első elem a bal-felső sarokhoz, a második a jobb-felsőhöz, és a harmadik a bal-alsóhoz. A negyedik pont, ami a kép jobb-alsó sarkát határozza meg, az előbbi háromból adódik.
- hdcSrc: a forráskép azonosítója.
- nXSrc: a forrásterület X koordinátája.
- nYSrc: a forrásterület Y koordinátája.
- nWidth: a forrásterület szélessége.
- nHeight: a forrásterület magassága.
- hbmMask: megadhatunk egy maszk bitképet is, aminek az azonosítója ez a paraméter. Ha nem használunk maszkot, akkor az értéke 0.
- xMask: a maszk X koordinátája.
- yMask: a maszk Y koordinátája.
A TRect típussal már sokszor találkozhattunk, így most már itt az ideje, hogy megnézzük, milyen függvények állnak a rendelkezésünkre a TRect struktúrában tárolt adatok manipulálására. A TRect struktúrát általában egy terület koordinátáinak tárolására használjuk, ezért ezentúl úgy hivatkozunk rá, hogy „terület”.
CopyRect
Az első paraméterben megadott területbe átmásolja a második paraméterként megadott területet. A visszatérési értéke igaz, ha a művelet sikerült, ebben az esetben a két terület adatai megegyeznek.
EqualRect
Összehasonlítja a paraméterként megadott két területet, és ha megegyeznek, akkor igaz értékkel tér vissza.
InflateRect
Akkor használhatjuk, ha a területet növelni, vagy csökkenteni szeretnénk. A második paraméter vízszintes irányban, a harmadik paraméter pedig függőleges irányban módosítja a terület méretét. Negatív érték esetén csökkentés, pozitív esetén pedig növelés történik. Az értékek hozzáadódnak a Left és Right, valamint a Top és Bottom mezőkhöz egyaránt.
IntersectRect
Kiszámolja második és harmadik paraméterként megadott két terület közös részének koordinátáit, és bemásolja az első paraméterként megadott struktúrába. Ha a két területnek nincs közös része, akkor a visszatérési értéke hamis, és a struktúra minden mezőjének értéke 0.
IsRectEmpty
Ha a paraméterként megadott terület egy üres terület, akkor igaz értékkel tér vissza. Egy terület akkor számít üres területnek, ha a jobb szélének koordinátája (Right) egyenlő, vagy kisebb a bal szélének koordinátájánál (Left), és/vagy az alsó szélének koordinátája (Bottom) kisebb, vagy egyenlő a felső szélének koordinátájánál (Top).
SetRect
A paraméterként megadott terület koordinátáit a szintén paraméterként megadott értékekre állítja be. Az első paraméter a terület struktúrája, a második a bal, a harmadik a felső, a negyedik a jobb, és az ötödik az alsó szélek koordinátája.
SetRectEmpty
A paraméterként megadott struktúrában egy üres területet ad vissza.
SubtractRect
A második és harmadik paraméterben megadott területet kivonja egymásból, és az első paraméterben megadott struktúrába másolja. A két területet csak akkor tudja egymásból kivonni, ha a vízszintes, vagy a függőleges koordinátáik egyenlők.
UnionRect
Kiszámolja azt a legkisebb területet, amibe a második és harmadik paraméterként megadott terület belefér, és a koordinátáit eltárolja az első paraméterként megadott struktúrába.
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 593. 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!
|