[Delphi] Kopiowanie na canvas z przezroczystoscia [szybkie]

Odpowiedz Nowy wątek
2006-10-01 20:26
0

Pisze taka gierke i potrzebuje na bitmape kopiowac szybko spora ilosc mniejszych bitmap. Zauwazylem ze jesli te mniejsze bitmapy maja wylaczana przezroczystosc to to wszystko obciaza mi procesor jakies 20 razy mniej (tak na oko, w każdym razie dużo mniej). I takie pytanie czy da sie jakoś szybko kopiować bitmapy z przezroczystoscią? I ciekawi mnie czemu standardowo trwa to dużo dłużej niż bez przezroczystosci.

Pozostało 580 znaków

2006-10-01 22:19
0

Odpowiedź jest prosta ,To że jakaś bitmapa ma kolor transparent oznacza po prostu że piksel w danym kolorze nie jest rysowany czyli jeśli sobie chcesz transparent kolor komputer sprawdza wszystkie piksele pod kątem tego czy nie równają się kolorowi przeźroczystemu i dopiero potem je ewentualnie rysuje.
Natomiast gdy nie ma transparentości komputer przerysowywuje wszystko "jak leci " bez sprawdzania czy ma dany kolor rysować czy nie. Różnica czasowa jest właśnie przez to sprawdzanie. ;-P
np.
przy bitmapie 24 bitowej każdy piksel ma aż 3 bajty do sprawdzenia czyli dla pitmapki 100X100 mamy
30000 bajtów do sprawdzenia :>

Pozostało 580 znaków

2006-10-02 22:24
dj
0

Ja jednak uważam że to nie tyle problem rysowania przezroczystych bitmap ale implementacji TBitmap Borland'a. Borland tak zaimplementował TBitmap by można tego wygodnie używać ale niestety dzięki temu utracono szybkość. Ja proponuje używać 32 bitowych bitmap i funkcji winapi AlphaBlend(...) do rysowania tego na innej bitmapie.


Great spirits have always encountered violent opposition from mediocre minds.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0