|
|
Képek, képrészek másolása
Canvas objektum 6. rész
|
|
Példaprogram letöltése
123595 bájt
|
Ha készítendő rajzunkon néhány előre elkészített képet is fel szeretnénk használni, akkor erre is van lehetőségünk. Gondoljunk például egy olyan komponensre, amin kis ikonok is megjelenhetnek (pl. TSpeedButton). A cikksorozat ezen része az ilyen képek felhasználásának, illetve képrészletek másolásának módjáról szól.
A legegyszerűbb módszer egy kép kirajzolására, amikor megadjuk azt a pozíciót (koordinátát), ahová képet szeretnénk másolni, illetve megadjuk magát a képet. Erre való a Draw eljárás.
var
kep. TBitmap;
...
Canvas.Draw(30, 40, kep);
Az első két paraméter a kép pozíciója, míg a harmadik maga a kép. A kép egy TGraphic osztályból származó objektum lehet, a fenti példában TBitmap típusú. Ha ez utóbbi típust használjuk, akkor a kép megjelenítésénél a CopyMode property értéke is figyelembe lesz véve. Ez utóbbiról később még lesz szó.
Előfordulhat olyan eset, amikor egy bitképet nem az eredeti méretében szeretnénk megjeleníteni. Ekkor használhatjuk a StretchDraw eljárást. Ennek első paramétere egy TRect típusú érték, amiben nem csak a kép bal felső sarkának koordinátáit tudjuk megadni, hanem a jobb alsót is. A második paraméterként megadott kép tehát nem az eredeti méretben, hanem a koordináták által meghatározott méretben jelenik meg.
StretchDraw(Rect(100, 50, 350, 120), kep);
Ha egy képnek csak egy bizonyos részletét szeretnénk a Canvas-ra másolni, akkor erre a CopyRect eljárást használjuk. Ennek első paramétere TRect típusú, és a célterület koordinátáit adja meg. A második paraméter az a Canvas, amiről a képrészletet másolni szeretnénk. Az utolsó paraméter szintén TRect típusú, és a másolandó terület koordinátáit tartalmazza.
Canvas.CopyRect(Rect(10, 10, 80, 80), kep.Canvas, Rect(x0, y0, x1, y1));
Mindhárom műveletre hatással van a CopyMode property értéke. Ebben konstansokkal adhatjuk meg, hogy milyen logikai művelettel kerüljenek a képek másolásra, vagyis a forrás és a célkép pixelei között milyen logikai műveletet használjon az új kép pixeleinek kiszámításakor.
A következő értékeket adhatjuk meg:
- cmBlackness: az új pixelek színe fekete lesz.
- cmDstInvert: invertálja a célterület pixeleit.
- cmMergeCopy: a célkép és a forráskép pixelei között ÉS műveletet végez.
- cmMergePaint : a forráskép pixeleit invertálja és a célkép pixelei között VAGY műveletet végez.
- cmNotSrcCopy: invertálja a forrás kép pixeleit.
- cmNotSrcErase: a pixelek közötti VAGY műveletet végez, és invertálja az eredményt.
- cmPatCopy: a forrás mintát másolja.
- cmPatInvert: kombinálja a forrás mintát a célképpel XOR műveletet használva.
- cmPatPaint: a forrás kép pixeleit kombinálja VAGY művelettel a forrás mintával, és az eredményt kombinálja a célképpel, szintén VAGY művelettel.
- cmSrcAnd: a forráskép és a célkép pixelei között ÉS műveletet végez.
- cmSrcCopy: átmásolja a forrásképet a célképre.
- cmSrcErase: invertálja a célképet, és az eredményt kombinálja a forrás képpel ÉS műveletet használva.
- cmSrcInvert: XOR művelettel kombinálja a célkép és a forráskép pixeleit.
- cmSrcPaint: OR művelettel kombinálja a célkép és a forráskép pixeleit.
- cmWhiteness: a célkép pixelei fehérek lesznek.
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 530. 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!
|