Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    258

    [C] getimage e putimage

    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    258
    Ok, penso di aver risolto.
    il fatto è che gli facevo disegnare delle ellissi di raggio 20. e poi allocavo con la malloc uno spazio di 21*21... dimenticandomi che 20 era il raggio, non il diametro! ;-)
    usando invece la malloc(41*41) mi funziona...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.