tomass Temat założony przez niniejszego użytkownika |
» 2011-08-28 23:56:40 Dobra już jest lepiej, ale jeszcze nie idealnie. Legenda obrazków: Zielony Kwadracik: lewy górny róg bitmapy Żółty Kwadracik: kursor Obrazek 400x300: Obrazek 800x600: Obrazek 1600x900: http://img62.imageshack.us/img62/7325/68207132.pngTlo.bmp 2000x2000: http://www.tomass.net/nowe/tlo3.bmpJuż po zmianie rozdzielczości obrazki są dobrze rozłożone ;] Ale jak widać w "Obrazek 1600x900" jest jeszcze problem, jak zmniejszać bądź zwiększać obrazek pod rozmiar okna allegro? Rozmiar okna sprawdzam tak: float wys = SCREEN_W; float szer = SCREEN_H; textprintf_ex( bufor, font,( wys / 40 ),( szer / 1.07142 ), makecol( 200, 200, 200 ), - 1, "Wysokosc = %f", wys ); textprintf_ex( bufor, font,( wys / 40 ),( szer / 1.03448 ), makecol( 200, 200, 200 ), - 1, "Szerokosc = %f", szer ); |
|
akwes |
» 2011-08-29 00:01:59 |
|
tomass Temat założony przez niniejszego użytkownika |
» 2011-08-29 10:49:48 Dobra działa ale mam nastepny problem masked_blit( ludek, bufor, 0, 0, ludek_x, ludek_y, ludek->w, ludek->h ); stretch_sprite( bufor, ludek,( wys / 3.94089 ),( szer / 5.88235 ),( wys / 16 ),( szer / 6.74157 ) );
Co zrobić by można było można mieć dostosowany obrazek oraz można było nim sterować? Sterowanie: if( key[ KEY_LEFT ] ) ludek_x--;
if( key[ KEY_RIGHT ] ) ludek_x++;
if( key[ KEY_UP ] ) ludek_y--;
if( key[ KEY_DOWN ] ) ludek_y++; |
|
SeaMonster131 |
» 2011-08-29 11:02:14 W funkcji stretch_sprite ustawiasz sobie gdzie ma się pojawić dana bitmapa prawda? To pomyśl :) U Ciebie X to jest ( wys / 3.94089 ) tak? No to możesz spróbować dodać do tego wartość ludek_x. To samo dla osi Y. Aczkolwiek nie wiem czy będzie działać poprawnie :) |
|
tomass Temat założony przez niniejszego użytkownika |
» 2011-08-29 11:22:07 EDIT: Mam teraz: float wys = SCREEN_W; float szer = SCREEN_H; float ludek_x =( wys / 3.94089 ), ludek_y =( szer / 5.88235 ); stretch_sprite( bufor, ludek, ludek_x, ludek_y,( wys / 16 ),( szer / 6.74157 ) ); Obrazek 400x300: http://img577.imageshack.us/img577/5987/53533625.png Obrazek 800x600: http://img94.imageshack.us/img94/1152/39400087.png Obrazek 1600x900: http://img839.imageshack.us/img839/6661/58343834.png Ludek to ten z pomarańczową głową. Wiecie co jest jeszcze źle? |
|
Gabes |
» 2011-08-29 17:43:35 Prosty sposób umieszczamy wszystko na bitmape tymczasową następnie bitmape do bufora za pomocą stretch_sprite
#include <allegro.h> int szer = 800; int wys = 600; void rozmiar() { set_gfx_mode( GFX_AUTODETECT_WINDOWED, szer, wys, 0, 0 ); } int main() { allegro_init(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, szer, wys, 0, 0 ); BITMAP * bufor = create_bitmap( szer, wys ); BITMAP * bmp_tymczasowa = create_bitmap( 800, 600 ); BITMAP * ludek = load_bmp( "ludek.bmp", default_palette ); while( !key[ KEY_ESC ] ) { clear_to_color( bmp_tymczasowa, makecol( 0, 128, 0 ) ); draw_sprite( bmp_tymczasowa, ludek, 100, 100 ); stretch_sprite( bufor, bmp_tymczasowa, 0, 0, szer, wys ); textprintf_ex( bufor, font, 0, 0, makecol( 22, 22, 22 ), - 1, "szer=%d wys=%d", szer, wys ); if( key[ KEY_Q ] ) szer = 320, wys = 240, rozmiar(); if( key[ KEY_W ] ) szer = 640, wys = 480, rozmiar(); if( key[ KEY_E ] ) szer = 800, wys = 600, rozmiar(); blit( bufor, screen, 0, 0, 0, 0, szer, wys ); } destroy_bitmap( ludek ); destroy_bitmap( bufor ); allegro_exit(); return 0; } END_OF_MAIN();
|
|
tomass Temat założony przez niniejszego użytkownika |
» 2011-08-29 19:48:07 Dzięki teraz działa, a ostanie pytanie. Bo jak mam monitor 1600x900 a ustawie tak: set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 1280, 720, 0, 0 );
to tak dziwnie wygląda ;/ A jak ustawie tak: set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 1600, 900, 0, 0 );
to wygląda dobrze ;] Więc jak mogę sprawdzić rozdzielczość komputera za pomocą allegro 4.2.2 ? EDIT: Zrobiłem tak jak tutaj piszę - http://cppkid.wordpress.com/2009/01/07/how-to-get-the-screen-resolution-in-pixels/ i działa ;] EDIT: Dziękuje za pomoc, teraz wszystko działa bez zarzutów ;) Temat można zamknąć. |
|
1 « 2 » |