A wiec tak wszystko chodzi rysuje tylko tak jakby allegro nie nadarzala za ruchami myszki jak wolno sie rysuje to jest dobrze a jak szybko ruszy myszka to robi sie tylko pare kropek .
Daje screena.
#include <allegro.h>
bool czy_zaznaczony_olowek = false;
BITMAP * bufor = NULL;
BITMAP * kartka = NULL;
BITMAP * przycisk_olowek = NULL;
BITMAP * olowek = NULL;
void draw()
{
if( mouse_x > 7 && mouse_x < 7 + przycisk_olowek->w &&
mouse_y > 70 && mouse_y < 70 + przycisk_olowek->h )
{
clear_to_color( przycisk_olowek, makecol( 3, 100, 3 ) );
}
else
{
clear_to_color( przycisk_olowek, makecol( 255, 0, 0 ) );
}
if( mouse_x > 7 && mouse_x < 7 + przycisk_olowek->w &&
mouse_y > 70 && mouse_y < 70 + przycisk_olowek->h && mouse_b == 1 )
{
czy_zaznaczony_olowek = true;
clear_to_color( przycisk_olowek, makecol( 110, 7, 30 ) );
}
if( czy_zaznaczony_olowek == true && mouse_b == 1 )
{
mouse_x = mouse_x;
masked_blit( olowek, kartka, 0, 0, mouse_x - 100, mouse_y - 30, olowek->w, olowek->h );
}
};
int main()
{
allegro_init();
install_keyboard();
install_mouse();
unscare_mouse();
set_gfx_mode( GFX_AUTODETECT_WINDOWED, 1000, 700, 0, 0 );
bufor = create_bitmap( 1000, 700 );
kartka = create_bitmap( 790, 600 );
przycisk_olowek = create_bitmap( 70, 30 );
olowek = create_bitmap( 3, 3 );
clear_to_color( kartka, makecol( 255, 255, 255 ) );
clear_to_color( przycisk_olowek, makecol( 255, 0, 0 ) );
clear_to_color( olowek, makecol( 255, 0, 0 ) );
while( !key[ KEY_ESC ] )
{
draw();
clear_to_color( bufor, makecol( 110, 110, 110 ) );
masked_blit( kartka, bufor, 0, 0, 100, 30, kartka->w, kartka->h );
masked_blit( przycisk_olowek, bufor, 0, 0, 7, 70, przycisk_olowek->w, przycisk_olowek->h );
textprintf_ex( bufor, font, 15, 75, makecol( 0, 0, 0 ), - 1, "OLOWEK" );
show_mouse( bufor );
masked_blit( bufor, screen, 0, 0, 0, 0, 1000, 700 );
}
allegro_exit();
return( 0 );
}
END_OF_MAIN();