ci ho provato a smanettare un pochino con il c e a provare a tradurlo in visual basic... ma mi restituisce errore...
codice:
IntPtr myhdc = GetDC(pictureBox1.Handle );
uint pixel = GetPixel(myhdc ,50, 50);
e le dichiarazioni in vb come le devo fare?
codice:
Public Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As Integer, ByVal nXPos As Integer, ByVal nYPos As Integer) As Integer
Public Declare Function GetDC Lib "user32.dll" (ByVal hwnd As IntPtr) As IntPtr
Public Declare Function ReleaseDC Lib "user32.dll" (ByVal hwnd As IntPtr, ByVal hdc As IntPtr) As Int32
così può andare?
ma comunque in esecuzione mi dice:
Impossibile trovare un punto di ingresso con nome 'releaseDC' nella DLL 'user32.dll'.
edit:
Scrivendo
codice:
Public Declare Function ReleaseDC Lib "user32.dll" (ByVal hWnd As System.IntPtr, ByVal hDC As System.IntPtr) As Integer
non mi da errore, ma mi restituisce 240,240,240 se la webcam non è avviata e 255,255,255 se è avviata...
(ovviamente ho provato a mettere luce davanti e non cambia niente..)
riedit:
E dopo un po ci sono riuscito :P
Praticamente ho salvato un fotogramma in un altra picturebox, e analizzo quella con il metodo sopra e funziona :P
codice:
Private Sub CaptureImage()
Dim data As IDataObject
Dim bmap As Image 'copiamo l'immagine nella clipboard---
SendMessage(hHwnd, WM_CAP_EDIT_COPY, 0, 0) 'convertiamo il tutto in bmp data = Clipboard.GetDataObject()
If data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then
bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), _ Image)
PictureBox1.Image = bmap 'StopPreviewWindow()
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
CaptureImage()
End Sub
e ovviamente
Dopo basta mettere un timer che faccia in automatico i click e il gioco è fatto!
codice:
Dim hdc As IntPtr = GetDC(PictureBox1.Handle)