Oppure

Loading
10/11/13 11:26
masterz
Salve a tutti , mi ritrovo con questo problema ,
vorrei avere un riquadro sulla mia form in cui e' visibile una parte dello schermo in tempo reale ,
per fare questo ho messo in loop il codice seguente :
                Dim bmpQuadro As Bitmap = New Bitmap(320, 320) 
                Dim graph As Graphics = Nothing
                graph = Graphics.FromImage(bmpQuadro)
                graph.CopyFromScreen(BASE.X, BASE.Y, 0, 0, bmpQuadro.Size) ' copia la porzione di schermo
                graph.Dispose()


che poi un altra funzione ( anzi un thread apposito ) , dopo aver elaborato il bitmap , lo disegna continuamente sul form .

il problema e' che non riesco ad arrivare a 30 immagini per secondo , quindi la porzione di schermo non si vede fluidamente . Non e' il modo giusto di fare questa cosa .

Qualcuno sa consigliarmi un altro metodo per fare questo , che sia piu veloce ?
Ultima modifica effettuata da masterz 10/11/13 11:28
aaa
12/11/13 1:26
gigisoft
non so, ma forse è il loop che ti frega, e appesantisce l'esecuzione,
invece che in un loop prova a inserire il codice nel gestore di un evento (tipo quando la porzione di schermo cambia, e quindi effettivamente la bitmap va aggaiornata)
aaa
12/11/13 11:52
masterz
e' un bel problema , le sto provando tutte ,

riesco ora ad arrivare a 30 screen per secondo ,
ma il problema principale e' che richiamando graph.CopyFromScreen , si incanta tutta la form per un istante , nonostante abbia lanciato la funzione da un thread separato da quello principale ,
col risultato che in un'altra form , dove ho un altro loop che mi disegna continuamente le bitmap appena screenshoottate come base piu' altri oggetti come rettangoli , linee , altre bitmap incollate piu' vari effetti grafici ,
in cui riesco a fare 90-100 cicli al secondo ... inizia ad essere scattosa pure quella !
Si nota anche muovendo la finestra di qualsiasi FORM , anche esterno alla mia applicazione , che durante il loop che fa screenshot , vanno tutte a scatti , e' come se CopyFromScreen incantasse tutto il sistema GDI di windows che disegna il desktop e le finestre ... ( e' GDI che disegna le finestre su windows... vero ?)


Ho provato anche ad usare directX per gli screenshot ... stesso risultato.
aaa
12/11/13 13:04
masterz
accidenti , la soluzione era molto piu' semplice del previsto ,

disabilitare AERO di win7

sono passato da 30fps a 180.

8-| ho perso una giornata di lavoro per questa cavolata.
aaa