Newsgroup: it.comp.programmare.win32
Titolo: Usare un DC di memoria

Salve a tutti, mi chiamo Marco Rossi.
Ho la necessità di creare un'animazione video, con elementi ottenuti
attraverso le funzioni grafiche della GDI di windows, in MFC. Per evitare
fastidiosi sfarfallamenti invece di disegnare gli oggetti direttamente sullo
schermo volevo disegnare tutti gli oggetti del fotogramma successivo in un
DC di memoria, (credo attraverso CreateCompatibleDC e forse anche con altre
funzioni...), poi copiare l'intero fotogramma al DC di schermo con la
funzione BitBlt.
Le funzioni da usare dovrebbero essere queste, ma non so come! Per favore,
qualcuno è in grado di aiutarmi?
Utilizzo Visual C++ 6.0.
Ringrazio anticipatamente.

Per evitare "fastidiosi sfarfallamenti" dovresti evitare l'uso delle GDI a
priori , la loro lentezza č a dir poco leggendaria e non riuscirai mai ad
ottenere un animazione decente.
--
Ciao , Ricardo Antonio Piana
(Rico per gli amici)
ricard...@tiscalinet.it
http://web.tiscalinet.it/ricardopiana
***

 attraverso le funzioni grafiche della GDI di windows, in MFC. Per evitare
cut..

 ottenere un animazione decente.
Si, so che non dovrei usare la GDI. Sarebbe meglio usare le directX, ma non
so usarle. In ogni caso il programma che devo fare è per la tesi di laurea,
non è importante la qualità dell'animazione, anche se è scattosa non
importa. L'unica cosa è evitare gli sfarfallamenti, cosa che credo sia
possibile con i DC di memoria. Qualcuno sa come si usano?
Saluti e grazie.

Ringrazio anticipatamente.
Saluti,
    Mardy



> Come detto da Rico (si', siamo amiconi :-) )
..nei NG si è tutti amici , lo impone la Netiquette no ?. -)
--
Ciao , Ricardo Antonio Piana
(Rico per gli amici)
ricard...@tiscalinet.it
______________________________________________
Tutti i miei racconti , alcune poesie ed altro nel mio sito
http://web.tiscalinet.it/ricardopiana
______________________________________________

possibile con i DC di memoria. Qualcuno sa come si usano?
Dunque non sono yngrande esperto, ma la tua idea dovrebbe funzionare
(anche perche` non sarebbe altro che il double buffering).
Mi pare che i passi da fare siano:
1) creare un DC compatibile con quello di destinazione
     usa l'api CreateCompatibleDC
2) Eseguire le operazioni di output sul DC creato
3) copiare il memorydc nel dc di destinazione
Dovresti trovare dei buoni esempi sull'help dell'SDK
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

della GDI vista la sua lentezza.
Dipende da cosa devi farci, utilizzando il double buffering (ovvero i
memorydc) ottieni prestazioni maggiori di quelle che avresti scrivendo
direttamente sul dc della finestra. Per molti problemi basta agire
in tal modo, senza dover ricorrere alle directx...


Io per prepapare immagini in memoria uso questa procedura.
//********
CDC memDC;
CBitmap bmp;
memDC.CreateCompatibleDC(pDC);
bmp.CreateCompatibleBitmap(pDC,W,H);
//dove: pDC puntatore al DC di schermo, W e H larghezza e altezza in
//pixel
memDC.SelectObject(&bmp);
//**
//Qua prepari il tuo fotogramma in memDC
//**
//quando e'pronto lo spari sullo schermo
pDC->BitBlt(0,0,W,H,&memDC,0,0,SRCCOPY);
//*******
Durante i primi esperimenti non selezionavo la bitmap WxH  all'interno
del memDC e quando lo modificavo in realta' non conlcudevo nulla.
Ciao.
Alessandro.