Sto facendo un programma di grafica e mi serviva disegnare due figure che si spostano.
Allora nella prima versione disegnavo una figura, poi gli disegnavo sopra un quadrato nero e disegnavo la figura un pò spostata.
Poi mi è venuto in mente di usare la getimage per salvare l'immagine sottostante e poi ripristinarla.
In pratica fare così:
if (da_disegnare)
{
getimage(posiz_x-largh/2,posiz_y-alt/2,posiz_x+largh/2,posiz_y+alt/2, img);
fillellipse (posiz_x,posiz_y,largh,alt);
}
else
{
putimage(posiz_x-largh/2,posiz_y-alt/2, img, COPY_PUT);
}
Questo funziona bene se c'è un solo oggetto che si muove.
Se però gli oggetti sono 2, il codice viene modificato così:
if (da_disegnare)
{
if (ogg1)
{
getimage(posiz1_x-largh1/2,posiz1_y-alt1/2,posiz1_x+largh1/2,posiz1_y+alt1/2, img1);
fillellipse (posiz1_x,posiz1_y,largh1,alt1);
}
else
{
getimage(posiz2_x-largh2/2,posiz2_y-alt2/2,posiz2_x+largh2/2,posiz2_y+alt2/2, img2);
fillellipse (posiz2_x,posiz2_y,largh2,alt2);
}
}
else
{
if (ogg1)
{
putimage(posiz1_x-largh1/2,posiz_y1-alt1/2, img1, COPY_PUT);
}
else
{
putimage(posiz2_x-largh2/2,posiz2_y-alt2/2, img2, COPY_PUT);
}
}
E il programma gira male. Cioè non cancella bene quello che c'è sotto, ma lascia delle macchie di colore.
img, img1 e img2 sono dei puntatori di tipo void che ho allocato con la malloc.
Qual è il problema secondo voi?