(14-11-2010 19:59) #1
(Allegro)4. Wyświetlanie pliku graficznego
Wyświetlanie pliku graficznego
Wreszcie nauczymy się wyświetlać grafikę! Narysuj jakiś obrazek w paincie. U mnie jest to ludzik 40x40 pixeli zapisany jako ludek.bmp. Umieszczamy go w tym samym katalogu co projekt i zaczynamy zabawę.
Kodzik:
Kod:
#include <allegro.h>
int main()
{
allegro_init();
install_keyboard();
set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0);
clear_to_color(screen, makecol(128,128,128));
Tutaj nie ma co wyjaśniać, te linijki dobrze znamy .
Kod:
BITMAP *ludek = NULL;
No, tutaj coś nowego. W tej linijce, deklarujemy wskaźniki naszej bitmapy.
Kod:
ludek = load_bmp("ludek.bmp",default_palette);
if (!ludek)
{
set_gfx_mode(GFX_TEXT,0,0,0,0);
allegro_message("nie mogę załadować obrazka Ludek !");
allegro_exit();
return 0;
}
Ładujemy obrazek do pamięci.
Kod:
blit( ludek, screen, 0,0, 100,100, ludek->w, ludek->h);
readkey();
Wyświetlamy nasz obrazek.
Kod:
destroy_bitmap(ludek);
Sprzątamy po naszym programie J.
Kod:
allegro_exit();
return 0;
}
END_OF_MAIN();
Kończymy pracę z Allegro.
Teraz objaśnienie nowych linijek itp.:
1) ludek = load_bmp("ludek.bmp",default_palette);- Jej jedyne argumenty to ścieżka do pliku wraz z jego nazwą, paleta kolorów. Jeżeli nie lubimy Windowsowego formatu .BMP mamy do dyspozycji pokrewne formaty:
-.PCX
-.LBM
-.TGA
Jednak to usuwania przydzielonej pamięci spod wskaźnika używamy zawsze destroy_bitmap.
2) Zauważyłes, że bitmapa jest wyświetlana z tłem? Otóż są na to dwa sposoby:
-Rózowe tło- wzór to makecol(255,0,255)
-Po drugie zamiast funkcji blit użyjemy masked_blit, dodajmy ją do powyższego kodu zaraz pod funkcją blit:
masked_blit( ludek, screen, 0,0, 200,100, ludek->w, ludek->h);
masked_blit( ludek, screen, 0,0, 200,100, ludek->w, ludek->h);
Funkcja ta jest bardzo podobna do funkcji blit, ma dokładnie te same argumenty, dlatego nie będę ich wyjaśniał. Najważniejsze w tej funkcji jest to, że kopiuje ona prostokątny wycinek pomijając kolor tła, dla trybu 8 bitowego ( 256 kolorów ) jest to barwa czarna czyli kolor o numerze 0. Dla trybów o wyższej głębi kolorów jest to kolor ostro różowy w formacie RGB ma numer 255,0,255.
Allegro umożliwia nam jeszcze jedną ciekawą funkcję, mianowicie zapisywanie obrazków do pliku. Możemy wybrać jeden z trzech formatów : BMP, TGA, PCX. Aby zapisać ekran z naszego programu używamy funkcji:
save_bitmap("ekran.bmp", screen, default_palette);
Jej argumentami są : nazwa pliku, bitmapa oraz paleta kolorów. Możemy używać również funkcji pokrewnych : save_bmp, save_pcx, save_tga, wtedy w nazwie pliku nie podajemy rozszerzenia.
(autor artykułu: MakiMaki)
(autor kodu: EasyKoder)