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

Wczytywanie obrazku bez tła w allegro

Ostatnio zmodyfikowano 2010-02-27 20:44
Autor Wiadomość
Geno
Temat założony przez niniejszego użytkownika
Wczytywanie obrazku bez tła w allegro
» 2010-02-11 23:59:07
Chodzi o to że powoli czytam sobie pierwsze lekcje allegro i jest mowa o wczytaniu obrazka bez tła. Nie jest tam wprost napisany kodzik do tego tylko pojawia się wzmianka o jakiejś zmianie koloru i się pogubiłem. Co mam zrobić? Oto mój mały, spisany program.
C/C++
#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( 225, 0, 225 ) );
    BITMAP * ludek = NULL;
    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;
    }
    masked_blit( ludek, screen, 0, 0, 200, 100, ludek->w, ludek->h );
    readkey();
    destroy_bitmap( ludek );
    allegro_exit();
    return 0;
}
END_OF_MAIN();



Przepraszam za prak od połowy tabulatorów, ale spisywałem ze strony i tak wyszło.
Wg. tutorialu masked_blit powinno zamaskować tło, ale nie wiem.
Jakiś pomysł?
P-13793
Sticky
» 2010-02-12 01:49:58
tło musi być koloru różowego (255,0,255)
może lepiej spróbować na buforze?
C/C++
BITMAP * bufor = NULL;
bufor = create_bitmap( 800, 600 );
masked_blit( ludek, bufor, 0, 0, 200, 100, ludek->w, ludek->h );
blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
P-13794
Geno
Temat założony przez niniejszego użytkownika
» 2010-02-12 14:52:00
Niezabardzo rozumiem, czy mógłbyś wkleić cały kodzik łącznie z różowym tłem? I przy okazji - dlaczego tło musi być różowe?
P-13814
dmx81
» 2010-02-12 14:56:24
tlo musi byc rozowe (255,0,255) poniewaz allegro ma tak zbudowana funkcje, ze dla tego koloru rysuje na przezroczysto :) pod warunkiem, ze zamiast funkcji blit, uzyjesz masked_blit

czyli inaczej, chcac wyswietlic rozowy dokladnie (255,0,255) - uzywasz blit, jesli chcesz, aby narysowac obrazek, ale zeby jego tlo bylo niewidoczne, najpierw sobie ustaw tlo na wlasnie w/w kolor, nastepnie na nim narysuj obrazek, a nastepnie wyswietl go za pomoca masked_blit - ta funkcja "nie widzi" tego koloru :) a raczej czyni go niewidocznym i widac przez niego jak przez szklo;)
P-13815
Geno
Temat założony przez niniejszego użytkownika
Działa!
» 2010-02-12 15:09:40
Działa! Dzięki!
Bo programuje od pewnego czasu, grałem kiedyś na psp w Dragon Ball i psp strzeliło, a naprawa zajmie dużo czasu. Ze względu na to pomyślałem sobie "hej, stary, chyba jest coś takiego jak allegro" i potem zaczełem czytać kursy które tutaj są. C++ jest fajnie napisany, ale allegro czasami poprostu jest troszkę za niezrozumiale napisany jak dla gimnazjalisty ;)
Jeszcze raz dzięki
P-13816
dmx81
» 2010-02-12 15:14:19
ogolnie chodzi o to, ze:

masz jakas mapke na ekranie wyswietlona, drzewa, cos tam itd....
na to chcesz wyswietlic swoja postac
wiec wchodzisz do painta, wybieraz atrybuty - czyli wysokosc i szerokosc postaci, rysujesz... wiadomo, twoj obrazek to prostokac (kwadrat to tez prostokat :) )
ale postac ma ksztalty nieco pozaokraglane
wyswietlajac swoja zapisana postac, na ekranie zobaczysz... drzewa, cala reszte kolorowego tla, a na nim swoja postac... ale nie zobaczysz jej ksztaltu, ale caly kwadrat zaslaniajacy troszke twoje tlo gry (czyli te przykladowe drzewka), a na tym kwadracie swoja postac - aby ten kwadracik usunac, a pozostawic sama postac, nalezy ta postac rysowac na przezroczystym tle, czyli naszym różu nr(255,0,255) i wyswietlic nasza postac poprzez masked_blit.

ps. jesli chcesz to przecwiczyc o co chodzi to:
1. otworz painta i wejdz w atrybuty, ustaw szerokosc i wysokosc, np 100x100
2. narysuj cokolwiek, byle wyraznego, np jakis znaczek, byle nie kolorem rozowym
3. zapisz plik w katalogu z gra(lub gdziekolwiek, a pozniej jak zaczniesz pisac program, powinien powstac katalog z jego nazwa, tam wrzucisz ten obrazek
4.powtorz pkt 1.
5.po ustawieniu atrybutow, znajdz ikonke "zalewania" kolorem obrazka, kliknij w jakis kolor kilkukrotnie, pozniej daj na DEFINIUJ WLASNIE KOLORY, a po prawej stronie w CZERWONY ZIELONY NIEBIESKI wpisz 255, 0, 255, nastepnie tym kolorem zalej obrazek
6. teraz na tym tle narysuj cos podobnego, lub cokolwiek, wyraznego, oczywiscie innym kolorem, niz tlo
7. zapisujesz pod inna nazwa i powtarzasz pkt 3.

jesli juz masz obrazki, wtedy tworzysz obiekty w programie - zobacz w kursie jak wyswietlac obrazki

pozniej, wyswietl oba obrazki za pomoca blit, pozniej oba za pomoca masked blit

wtedy zobaczysz

po co uzywac rozowego tla
po co uzywac masked_blit

napisz jak zrobisz:)
P-13817
Geno
Temat założony przez niniejszego użytkownika
» 2010-02-27 20:44:43
wiesz, ja ostatniego posta nie przeczytałem i poszedłem nieco dalej. zrobiłem postać poruszającą się dosłownie jak w wodbo. Już tła nie zasłania. Dzięki.

Jak nie wiesz co to wodbo to wejdź na youtube i poszukaj czegoś z grafiką tibii.

Też mam małe intro i też z użyciem masked_blit. Naprawdę to się przydaje
P-14268
« 1 »
  Strona 1 z 1