![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
И снова Web-камера [D7, WinXP]
Ozone © (2004-04-15 11:58:00)Инициализирую видео так:
hWndC := capCreateCaptureWindow('', WS_CHILD or WS_VISIBLE , 0, 0, 2*352, 2*258, aviPanel.Handle, nID);
//aviPanel : TPanel
capDriverConnect(hWndC, 0);
capFileSetCaptureFile(hWndC, PChar(aviFILE))
//aviFILE : string;
И делаю снимок
capCaptureSingleFrameOpen(hWndC)
И кладу его (снимок) в Stream как JPEG:
BMP := TBitmap.Create;
with BMP do begin
try
DC := GetWindowDC(hWndC);
try
GetWindowRect(hWndC, R);
Width := 320;
Height := 240;
BitBlt(Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY);
finally
ReleaseDC(hWndC, DC);
end;
JPG:= TJPEGImage.Create;
try
with JPG do begin
Grayscale := true;
CompressionQuality := 10;
Performance := jpBestSpeed;
ProgressiveDisplay := False;
PixelFormat := jf8Bit;
BMP.Canvas.TextOut(0,0,DateTimeToStr(now));
Assign(BMP);
SaveToStream('');
end;
finally
Jpg.Free;
end;
finally
Free;
end;
end;
Проблема в том, что если эта панель (aviPanel) чем-то перекрыта, н-р, другим окном, то соответсвенно на снимке получается это самое окно. (ну про сворачивание я вообще молчу).
Вопросы:
1. Как можно сделать все это по людски?
2. Если установлено 2 камеры, то как без запуска стандартного диалога capDlgVideoSource, выьрать нужную камеру?
PS: Юзаю VfW.pas
Ozone (2004-04-15 14:47:00) [1]Куда делись усе мастера?
Ozone (2004-04-15 12:25:00) [2]В принципе, 1й вопрос можно решить тем, что сделать окно поверх всех и запретить минимизацию.
А вот 2й?