Newsgroup: it.comp.lang.visual-basic
Titolo: Grafica flicker free FREE(?)

Scusate, ma non esiste un ocx (gratis) o del codice pronto-per-l'uso che
permetta di fare della grafica (anche semplice: due assi cartesiani ed una
curva) senza sfarfallio?
Non so se avete provato mai ad usare il mschart32.ocx, se devi rappresentare
un po' di dati che cambiano nel tempo (tipo 5 volte al secondo) ti viene il
mal di testa a guardarlo perché è tutto un lampeggio!
Ho provato con l'api lockwindowupdate (o altro nome... non ricordo) ma non
cambia assolutamente niente...
non esiste un qualcosa che permetta di fare la grafica su una canvas
"virtuale" che mi si scambia con quella  visualizzata? (magari sincronizzata
con il refresh del video)
Forse sto chiedendo troppo ma mi ricordo che da giovanotto quando
programmavo l'Amiga (bei tempi!) con l'Amos (bel basic!) esistevano due
comandi Double Buffer e WaitVbl (=Wait vertical blank) che ti facevano fare
delle belle animazioni fluide (e pensare che quel processore andava ad
8Mhz...).
Tornando ai giorni nostri, per il Delphi esiste una unit (non ocx purtroppo)
che si chiama rchart32.dcu che fa tutto questo...
Ma io che programmo in VB6 che cosa devo fare per avere una curva che mi
scrolla da sinistra a destra, caricando 5 dati al secondo senza farmi venire
l'emicrania? (possibilmente qualcosa di gratis, perché sennò l'emicrania mi
viene lo stesso...)
Ciao,
Välërïö

 cambia assolutamente niente...
LockWindowsUpdate non risolve il problema perché appena togli il "lock",
invalida lo schermo e Windows fa un refresh di tutto quello che sta a video.
La soluzione è quella classica del doppio buffer: usi 2 diversi controlli
mschart, uno visibile e l'altro no. Disegni su quello invisibile, ti
assicuri che avvenga il refresh, e poi lo mostri nascondendo quello che era
visibile prima. Continuando così, il refresh sparisce (ottieni unicamente
una rappresentazione un po' scattosa).
Non conosco mschart, non avendolo mai usato. quindi non ti posso dare sicura
al 100% la risoluzione del problema. L'importante è che l'ocx in questione
non si sogni autonomamente di fare un refresh quando viene reso visibile,
altrimenti sei punto e a capo. In questo ultimo caso, invece di rendere
invisibili i controlli, lavora sullo zorder mantenendoli visibili, oppure
sposta quello da nascondere al di fuori dello schermo, e poi riposizionalo
quando devi mostrarlo.
Ciao
*Roby*


Ci avevo gią provato: non funziona. Ma un altro componente non c'č?
Mi devo imparare le DirectX per fare un po' di grafica senza flicker?
Ciao, e grazie lo stesso,
Välėrļö

 Mi devo imparare le DirectX per fare un po' di grafica senza flicker?
DirectX non ti permette di certo di usare MSChart. Se proprio decidi di
evitarlo, fai prima a disegnare su due picturebox (e qui il doublebuffer
funziona di sicuro) piuttosto che imparare le DirectX.
Ma sei proprio sicuro di averle provate tutte? Fai un refresh forzato con
MSChart fuori dallo schermo, prima di riportarlo dentro, e poi vedi se
flickera. In caso, puoi sempre provare a "fotografare" l'immagine contenuto
in MSChart e plottarla dentro ad una PictureBox.
Ciao
*Roby*

 in MSChart e plottarla dentro ad una PictureBox.
L'idea č buona... ma non so come si fa...
Ciao e grazie,
Välërďö

 L'idea č buona... ma non so come si fa...
Mhmm, al momento č troppo tardi per concentrarsi su quesiti difficili. :-)
Ci penso e se mi viene in mente te lo dico.
Ciao
*Roby*