|
你的电脑有没有摄像头?看到别人用qq玩视屏你会不会去想怎么实现的? 这里介绍使用delphi使用ms的avicap32.dll就可轻松的实现对摄像头编程, 如果再加上你的网络编程水平,实现一个视屏聊天就不成什么问题了。 看看下面代码的代码:
const wm_cap_start = wm_user; const wm_cap_stop = wm_cap_start + 68; const wm_cap_driver_connect = wm_cap_start + 10; const wm_cap_driver_disconnect = wm_cap_start + 11; const wm_cap_savedib = wm_cap_start + 25; const wm_cap_grab_frame = wm_cap_start + 60; const wm_cap_sequence = wm_cap_start + 62; const wm_cap_file_set_capture_filea = wm_cap_start + 20; const wm_cap_sequence_nofile =wm_cap_start+ 63 const wm_cap_set_overlay =wm_cap_start+ 51 const wm_cap_set_preview =wm_cap_start+ 50 const wm_cap_set_callback_videostream = wm_cap_start +6; const wm_cap_set_callback_error=wm_cap_start +2; const wm_cap_set_callback_statusa= wm_cap_start +3; const wm_cap_set_callback_frame= wm_cap_start +5; const wm_cap_set_scale=wm_cap_start+ 53 const wm_cap_set_previewrate=wm_cap_start+ 52
function capcreatecapturewindowa(lpszwindowname : pchar; dwstyle : longint; x : integer; y : integer;nwidth : integer;nheight : integer;parentwin : hwnd; nid : integer): hwnd;stdcall external ‘avicap32.dll‘;
上面的代码就是我们主要用到的一个函数和常量的定义。
好了,打开你的delphi,新建一个工程,将上面的定义加上吧。
新建一个窗口,放个panel上去,添加一个按钮,caption设置为"开始" 这里需要定义一个全局变量,var hwndc : thandle;
开始按钮代码如下:
begin hwndc := capcreatecapturewindowa(‘my own capture window‘,ws_child or ws_visible ,panel1.left,panel1.top,panel1.width,panel1.height,form1.handle,0);
hwndc := capcreatecapturewindowa(‘my own capture window‘,ws_child or ws_visible ,panel1.left,panel1.top,panel1.width,panel1.height,form1.handle,0); if hwndc <> 0 then begin sendmessage(hwndc, wm_cap_set_callback_videostream, 0, 0); sendmessage(hwndc, wm_cap_set_callback_error, 0, 0); sendmessage(hwndc, wm_cap_set_callback_statusa, 0, 0); sendmessage(hwndc, wm_cap_driver_connect, 0, 0); sendmessage(hwndc, wm_cap_set_scale, 1, 0); sendmessage(hwndc, wm_cap_set_previewrate, 66, 0); sendmessage(hwndc, wm_cap_set_overlay, 1, 0); sendmessage(hwndc, wm_cap_set_preview, 1, 0); end; 按f9运行一下,怎么样,是不是可以看到摄像头的视屏了?
那怎么停下来?再加个按钮caption设置成"停止" 代码如下: if hwndc <> 0 then begin sendmessage(hwndc, wm_cap_driver_disconnect, 0, 0); hwndc := 0; end;
视屏截到了,怎么把它给保存下来呢?
下面按两种方式保存,一个是bmp静态图,一个是avi动画。
本文关键:Delphi编程控制摄像头
本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)
|