Sziasztok! Egy olyan probléma merült fel a munka során, hogy képeket kell egymás fölé pakolásznom. Az felső rétegek transzparensek, úgy próbálom megoldani a dolgot, hogy minden pixelt külön írok az alatta lévő fölé. Az félig-átlátszó pixeleket viszont nem mennek olyan egyszerűen egymás fölé. Van valakinek valami tapasztalata a témában? Válaszotokat előre is köszönöm.
- 4478 megtekintés
Hozzászólások
A cél egyértelmi, viszont konkrétabbat kéne mondanod.
pl.: Miben szeretnéd megoldani, hol jársz, milyen megoldással próbálkoztál eddig.stb;]
- A hozzászóláshoz be kell jelentkezni
Egy androidos programról lenne szó, de szerintem ez nem java-specifikus probléma :)
Egy Bitmap típusú függvényen dolgozom, aminek két paramétere az alap kép, valamint egy ArrayList, ami a ráhelyezendő képeket tartalmazza. Mindegyik kép ugyanakkora, ezért műkődik a getPixel-setPixel megoldás a nem-átlátszó részeken. A teljes átlátszósággal szintén nincs probléma, mert ott egyszerűen nem vizsgálom a két pixel színét, csak a felsőt kirajzolom. A probléma ugye a félig-átlátszó elemeknél jelentkezik. Amit tudok csinálni, hogy ki tudom nyerni az adott pixel piros-zöld-kék értékét, valamint az alfát, aminek az értéke szintén 0-255ig terjed. Van a Color-nak egy olyan metódusa, hogy:
argb(int alpha, int red, int green, int blue)
Return a color-int from alpha, red, green, blue components.
Ezeket próbáltam variálni különböző neten talált módszerek szerint, de legtöbbször csak hangyafoci jött ki a végén.
- A hozzászóláshoz be kell jelentkezni
igen, de az amit előtte írtál, az alapján lehetett volna c, sdl, solaris rendszerre;D
Az android és a java eddig még elkerült engem (és én meg őket).
Ha logikai szempontbol nézem, felmerűl pár kérdés megint.
A több bitmapből kell rajzolni, vagy memóriában tárolni? Mert előbbinél csak rgb -t, másik esetnél rgba -t kell számolni hogy jó legyen a végeredmény.
- A hozzászóláshoz be kell jelentkezni
Ne több bitmapet nézzünk, hanem először csak kettőt :)
Fogom a felső-maszk-kép x,y pixeljét, megnézem átlátszó-e. Ha nem, fogom az alsó képet, és ráírom az adott pixelt. Következő pixel, megnézem átlátszó-e, ha igen, akkor kezdek el számolni. Alsó kép x,y+1. pixele fölé kerül a félig-átlátszó maszk kép x,y+1. pixele. Csak a végeredmény randa
- A hozzászóláshoz be kell jelentkezni
de nem is arra válaszoltál amit kérdeztem:D
rgb (vagyis közvetlen kijelzőre küldöd), vagy előbb store rgba formátumban mert még kell valamire a sokrétegből összehozott cucc (pl spritenak)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Alsó pixel: R0, G0, B0
Felső pixel: A1, R1, G1, B1
Eredmény: R, G, B
R = (R0 * (255-A1) + R1 * A1) / 255
G = (G0 * (255-A1) + G1 * A1) / 255
B = (B0 * (255-A1) + B1 * A1) / 255
- A hozzászóláshoz be kell jelentkezni
Köszönöm, ez gyönyörűen működik :)
- A hozzászóláshoz be kell jelentkezni
Pixelenkent nem lesz ez qr*a lassu? Nincs erre valami API? A fenti wikipedias linken irjak, hogy van OS support. Nem belepofazaskent mondom, csak szerintem jobb lenne megprobalni azt hasznalni.
---
Apple iMac 20"
áéíóöőúüű
- A hozzászóláshoz be kell jelentkezni
Elég lassú, de nem olyan nagy képekről van szó, átmenetileg jó lesz ez a megoldás.
- A hozzászóláshoz be kell jelentkezni