HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Blur grafikai effekt


Példaprogram letöltése

62272 bájt

A legtöbb képfeldolgozó programban találunk egy ún. Blur effektet, amivel az adott képet homályosíthatjuk el. Ebben a példában egy olyan függvényt mutatunk be, ami ezt a funkciót valósítja meg úgy, hogy az "elhomályosítás" mértékét is tudjuk változtatni egy paraméteren keresztül.
A függvény paraméterként egy TBitmap típusú objektumot, valamint a homályosítás mértékét várja. A visszatérési értéke egy TBitmap típusú objektum, amiben az elhomályosított kép található.
function Blur(bmp: TBitmap; strength: integer):TBitmap;
Az effekt működési elve nagyon egyszerű. Végigmegyünk egyenként az összes pixelen, és a pixeltől eggyel balra, jobbra, illetve a felette illetve alatta lévő pixelek színét átlagoljuk. Az új képen az adott pixel színe a kapott szín lesz. Ha ezt a műveletet többször egymás után elvégezzük, mindig az eredmény képet felhasználva kiindulásként, akkor egy egyre inkább elhomályosított képet kapunk. Arra kell csupán figyelni, hogy a kép szélein lévő pixelek mellett nem mindenhol vannak további pixelek (például egy bal szélső pixel mellett balra nincs másik pixel), ezért amikor az átlagolt színt kiszámítjuk, ezt figyelembe kell venni.
A függvény részletes leírása a következő: A paraméterként megkapott TBitmap objektumot átmásoljuk két új objektumba. Az egyik az inbmp, amit alapul veszünk az új kép készítésekor, a másik pedig az outbmp, amiben a végeredményt kapjuk meg. Egy ciklust indítunk, ami annyiszor fut le, amennyit a strength paraméterben megadtunk. Ha 0-t adunk meg, akkor is legalább egyszer. Ebben két további, egymásba ágyazott ciklus található. A külső ciklus az y koordinátákon halad végig, és egy-egy változóba eltárolja az aktuális sor előtti (l1), az aktuális sor (l2), és az az utáni sor (l3) kezdőcímét a forrás képből, valamint az aktuális sor kezdőcímét a cél képből (l). Ehhez a Scanline függvényt használja fel, ami sokkal gyorsabb pixel elérést tesz lehetővé, mint a TCanvas Pixels property-je.
A belső ciklus az x koordinátákon halad végig, és az aktuális pixel szomszédos színeiből előállítja az átlagos színt, amihez egy saját belső függvényt használ (AddColorToAvg) fel. Ez a függvény számolja, hogy hány szín, és milyen színek lettek megadva, és így pontosan ki lehet számolni a színek átlagát. Az új képen az aktuális pixel színe az így kiszámított szín lesz. Az eredeti kép aktuális pozíciójában lévő pixel színét nem vesszük figyelembe, az majd úgyis részt vesz a szomszédos pixelek színének megállapításakor. Amikor elkészült az új kép, akkor átmásoljuk azt az inbmp objektumba, hogy ha további lépések következnek, akkor már ez legyen a kiinduló kép. A függvény visszatérési értéke az outbmp lesz.


Cikksorozat

#IDKategóriaCikk címeSorozat
1063DelphiInterbase 6 alkalmazása Delphi-ben1. rész
1072DelphiInterbase 6 alkalmazása Delphi-ben2. rész
1084DelphiInterbase 6 alkalmazása Delphi-ben3. rész
1092DelphiTIBTable komponens4. rész
1102DelphiTIBTransaction komponens5. rész
1111DelphiTIBQuery komponens6. rész
1120DelphiTIBStoredProc komponens7. rész
1128DelphiTIBDataSet komponens8. rész
1141DelphiTIBSQL komponens9. rész
1150DelphiTIBSQLMonitor komponens10. rész
1159DelphiTIBUpdateSQL komponens11. rész
1167DelphiIBEvents komponens12. rész
1177DelphiIBDatabaseInfo komponens használata13. rész
1183DelphiTIBConfigService komponens14. rész
1192DelphiTIBSecurityService komponens15. rész
1204DelphiTIBServerProperties komponens16. rész
1213DelphiTIBBackupService komponens17. rész
1222DelphiTIBRestoreService komponens18. rész
1231DelphiTIBValidationService komponens19. rész
1240DelphiTIBStatisticalService komponens20. rész
1249DelphiTIBLogService komponens21. rész
1258DelphiTIBUninstall komponens22. rész
1267DelphiInterBase Express komponenscsomag23. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 461. 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 |