Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro] Zmiana wielkosci BITMAPY

Ostatnio zmodyfikowano 2008-09-12 11:59
Autor Wiadomość
JarekKatowice
Temat założony przez niniejszego użytkownika
[Allegro] Zmiana wielkosci BITMAPY
» 2008-09-12 09:14:14
Czy można zmienić rozmiar BITMAPY po jej utworzeniu. Chodzi mi o taki przypadek: w mojej klasie Sprite mam dwie bitmapy: jedna duza ze wszytskimi animacjami ludka a druga mala ktora stanowi chocby bufor dla sprita. Jesli wielkosc klatek animacji jest rowna to nie ma problemu. Gorzej kiedy niektore (zalezne co robi animowany sprite) maja rozne wielkosci gdyz wtedy blednie jest wykrywana kolizja. Dodam ze do wykrywania kolizji (pikselowej) uzwyam bilblioteki sciagnietej z allegro.cc pmask.
Jesli dalo by sie dynamieczie zmieniac wielkosc bitmapy - bufora w zaleznosci od wielkosci klatki to bylo by ok. Jestem teraz w pracy i nie moge sprawdzic czy mozna sterowac wlasciwosciami w,h (podejrzewam ze nie) czy moze trzeba zlikwidowac bitmape i utworzyc dynamicznie ponownie w zleznosci od wielkosci.
pozdr
Jarek
 
P-1552
DejaVu
» 2008-09-12 11:59:31
Tu masz listę funkcji związanych z bitmapą:
http://www.allegro.cc/manual/api/bitmap-objects/
Jak widać, nie ma tutaj czegoś takiego jak resize bo wiadomo, że wiązałoby to się z wykonaniem operacji:
C/C++
BITMAP * ResizeBitmap( BITMAP * stara )
{
    BITMAP * nowa = CreateBitmap( nowe_x, nowe_y );
    //skopiowanie starej do nowej
    DestroyBitmap( stara );
    return nowa;
}

Pozatym skoro tamta funkcja do wykrywania kolizji bierze pod uwagę przeźroczystość, to wystarczy że będziesz miał większy bufor klatki i przezroczyste tło tam, gdzie obrazek się nie skopiował. Inaczej mówiąc:
1. Wyczyść bufor klatki na różowy
2. Skopiuj klatkę do bufora
P-1553
« 1 »
  Strona 1 z 1