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

[Allegro, C++] Jak stworzyć obrazek bez tła?

Ostatnio zmodyfikowano 2011-07-30 12:42
Autor Wiadomość
Loodwin
Temat założony przez niniejszego użytkownika
[Allegro, C++] Jak stworzyć obrazek bez tła?
» 2011-07-29 17:01:43
Witam!
Jak zrobić, aby w obrazku tło było przezroczyste. Wiem, że w kursie jest to napisane, ale nie rozumiem co trzeba zmienić w kodzie:
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( 0, 0, 0 ) );
   
    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;
    }
   
    blit( ludek, screen, 0, 0, 100, 100, ludek->w, ludek->h );
   
    readkey();
    destroy_bitmap( ludek );
   
    allegro_exit();
    return 0;
}
END_OF_MAIN();
P-37558
Thud
» 2011-07-29 17:13:02
Przeczytaj jeszcze raz kurs.
-Masz dwie możliwości - róż, czyli pseudoprzeźroczystość (opisaną w kursie)
-alpha
P-37559
malan
» 2011-07-29 17:13:56
» Kurs Allegro 4.x, C++Pliki graficzne lekcja:

Obrazek bez tła

Dobra... z wyświetlaniem obrazka nie ma problemu... ale czy zauważyliście, że nasz obrazek został wyświetlony razem z tłem ? Wygląda to naprawdę koszmarnie, aby temu zapobiec musimy zrobić dwie rzeczy:

Po pierwsze tło naszego obrazka powinno być różowe ( koszmarny kolor ;) ( maximum czerwonego i niebieskiego, 0 zielonego )) kolor ten ma wzór makecol(255,0,255); A więc wypełnijmy tło naszego obrazka tym kolorem.

Po drugie zamiast funkcji blit użyjemy masked_blit, (...)
P-37560
Loodwin
Temat założony przez niniejszego użytkownika
Ja nie wiem...
» 2011-07-30 12:30:04
Ja nie wiem co zrobić! Pomóżcie!
P-37606
SeaMonster131
» 2011-07-30 12:37:15
No musisz na obrazku np w Paincie to co ma być przezroczyste zamalować na kolor różowy (255,0,255) a następnie zamiast funkcji
blit();
 użyć
masked_blit();

Jeżeli nie będziesz uważnie czytał tutoriali to daleko nie zajdziesz..
P-37607
Loodwin
Temat założony przez niniejszego użytkownika
Aaa...
» 2011-07-30 12:42:45
Aaa! To o to chodzi. Ja w paincie zamalowywałem kolorem różanym, bo tam nie ma różowego. Dopiero, jak wziąłem "edytuj kolory" i ustawiłem 255 niebieskiego i 255 czerwonego to mi wyszło.

Edit:
Ja mam Win 7 i tam w paincie jest różany.
P-37608
« 1 »
  Strona 1 z 1