Cattura frame video

martedì 23 giugno 2009 - 14.45

mircoso Profilo | Newbie

Ciao a tutti,
ho trovato questa funzione che mi restituisce in un controllo bitmap l'immagine visualizzata in un controllo

Public Function Image(ByVal pbCtrl As Control) As Bitmap

Dim memImage As Bitmap
Dim g As Graphics = pbCtrl.CreateGraphics()
Dim s As Size = pbCtrl.Size
memImage = New Bitmap(s.Width, s.Height, g)
Dim memGraphic As Graphics = Graphics.FromImage(memImage)
Dim dc1 As IntPtr = g.GetHdc()
Dim dc2 As IntPtr = memGraphic.GetHdc()
GDI32.BitBlt(dc2, 0, 0, pbCtrl.ClientRectangle.Width, pbCtrl.ClientRectangle.Height, dc1, 0, 0, GDI32.SRCCOPY)
g.ReleaseHdc(dc1)
memGraphic.ReleaseHdc(dc2)
Return memImage

End Function


In un form, tramite del directshow visualizzo un filmato, lo metto in pausa e cerco di catturare l'immagine con la funzione Image.
Tutto bello ma... il problema è che mi restituisce una bitmap "nera".

Qualcuno mi riesce ad aiutare?

lordbarba@hotmail.it Profilo | Newbie

Non ce la farai mai cosi, perchè in realtà l'immagine del video non è nella picturebox ma SOPRA di essa.
Ecco perchè non riesci a grabbarla.
La stessa cosa succede se fai il PRINT SCREEN: dove c'è il video viene uuna parte neera. Per risolvere il problema, almeno per il print screen ma magari ti risolve anche il tuo, bisogna disabilitare l'accelerazione hardware: in proprietà dello schermo vai su Risoluzione dei problemi e in ACCELERAZIONE HARDWARE sposta la track circa a metà fino a che non dice " DISABILITA ACCELERAZIONI DIRECTDRAW. ...."

Spero di esserti stato utile

Leo

mircoso Profilo | Newbie

Provo,
grazie 1000

Mirco
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5