В этом случае элемент управления холста фактически не содержит изображения; он используется только для указания размеров и родительского элемента окна, управляемого системой, которое отображается непосредственно поверх холста.
Чтобы захватить текущий кадр, вам нужно будет захватить содержимое этого окна, управляемого системой.
например. добавить эту функцию в модуль WebCamWFS:
Function CaptureFrame(SourceCanvas As Canvas) As Picture
Declare Function GetDC Lib "User32" (HWND As Integer) As Integer
Declare Function BitBlt Lib "GDI32" (DCdest As Integer, xDest As Integer, yDest As Integer, nWidth As Integer, _
nHeight As Integer, DCdource As Integer, xSource As Integer, ySource As Integer, rasterOp As Integer) As Boolean
Declare Function ReleaseDC Lib "User32" (HWND As Integer, DC As Integer) As Integer
Const SRCCOPY = &h00CC0020
Const CAPTUREBLT = &h40000000
Dim hDC, w, h As Integer
hDC = GetDC(mWnd)
w = SourceCanvas.Width
h = SourceCanvas.Height
x = SourceCanvas.Left + SourceCanvas.Window.Left
y = SourceCanvas.Top + SourceCanvas.Window.Top
Dim capture As New Picture(w, h, 24)
Call BitBlt(Capture.Graphics.Handle(1), 0, 0, w, h, hDC, 0, 0, SRCCOPY Or CAPTUREBLT)
Call ReleaseDC(mWnd, hDC)
Return capture
End Function
Используйте DrawInto метод холста управления, чтобы скопировать изображение в Picture
объекта, а затем сохранить изображение в файл:
Dim mypic As New Picture(TargetCanvas.Width, TargetCanvas.Height, 32)
TargetCanvas.Drawinto(mypic.Graphics, 0, 0)
Dim saveto As FolderItem = GetSaveFolderItem("", "mypic.jpg")
mypic.Save(saveto, Picture.SaveAsJPEG)
Спасибо Amazed, но я боюсь, что это не сработает ... все, что я получаю, это белый прямоугольник. Я изменил последнюю строку, хотя: - saveto.SaveAsJPEG mypic. –
Попробуйте сохранить холст перед вызовом 'StopPreview'. –
Hi Amazed, Да, я пробовал это и попытался сохранить в разных плаценте различные графические объекты, такие как другой холст и так далее. Это определенно «DrawInto», который не работает, и я понятия не имею, почему. Я попытался изменить тип окна и все виды. Любые другие идеи? –