Forum - HAJLO.COMmunity [ forum dyskusyjne, kasa za posty, forum młodzieżowe, forum wielotematyczne ]


Nabór do ekipy forum!!! Więcej informacji: Napisz PW

Użytkownicy przeglądający ten wątek: 1 gości



(Allegro)4. Wyświetlanie pliku graficznego
(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)


(07-12-2010 15:11) #2

RE: (Allegro)4. Wyświetlanie pliku graficznego

Zamykam wątek ponieważ był on długo nie aktywny.
W celu otworzenia pisać na pw.





Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości

Linki

Copyrights

Tłumaczenie: Polski Support MyBB Silnik MyBB Styl: Darek