Delphi - Átlátszóság

GDI újdonságai 3. rész

forráskód letöltése
Néha úgy kell kirajzolnunk egy képet, hogy az átlátszó, vagyis bizonyos részein a kép mögötti háttér látható. Az sem ritka eset, hogy a kirajzolandó képet nem az eredeti méretében szeretnénk megjeleníteni, hanem kicsinyítve, vagy esetleg nagyítva. Van egy függvény, amely együtt tudja mindkét funkciót! A feladat megoldásához a TransparentBlt függvényt használjuk fel, amely a Win98-tól kezdve, illetve NT esetén Win2000-től kezdve használható saját alkalmazásainkban. A függvény a következőképpen néz ki:
function TransparentBlt(hdcDest: HDC; nXOriginDest, 
    nYOriginDest, nWidthDest, hHeightDest:integer; 
    hdcSrc: HDC; nXOriginSrc, nYOriginSrc, nWidthSrc, 
    nHeightSrc: integer; crTransparent: cardinal);

hdcDest
A cél kép leírója (pl. MyBitmap.Canvas.Handle).

nXOriginDest, nYOriginDest
A cél kép X és Y pozíciója.

nWidthDest, hHeightDest
A cél kép szélessége és magassága. Ha a cél kép mérete nem egyezik meg a forrás kép méretével, akkor a kép megfelelően kicsinyítve vagy nagyítva jelenik meg.

hdcSrc
A forrás kép leírója (pl. Image1.Canvas.Handle).

nXOriginSrc, nYOriginSrc
A forrás kép X és Y koordinátája.

nWidthSrc, nHeightSrc
A forrás kép szélessége és magassága.

crTransparent
Az átlátszó szín (pl. clWhite = a fehér színű részek helyett a kép mögötti háttér látszik.)

A függvény visszatérési értéke True, ha sikerült kirajzolni a képet.

A példaprogramban a bal oldali kép az eredeti, míg a jobb oldalon a TransparentBlt függvénnyel megrajzolt kép látható. Bármelyik képen kattintva a kiválasztott szín a jobboldali képen átlátszó lesz, és a szín helyén az előzőleg kirajzolt szürke kockás "háttér" látszik.

GDI újdonságai cikksorozat