就是普通的USB摄像头,现在要实现一个功能,像QQ一样,插入USB摄像头之后,能通过软件获取摄像头的视频数据。
解决方案 »
- 请问大家,我在winform里面添加了一个panel,设置成autoscroll,在Panel里面放一个treeview不能滚动的,每次获得焦点后都滚动到顶端
- 关于代码执行顺序的问题。
- socket两个客户端转发问题,高手进,在线等,很急。。
- 求救高手! 线程问题
- 求c#聊天室,要有后台代码,功能越简单越好!
- C#如何把DataView控件里的数据写入xml文件中
- 初学者的问题关于文件操作的问题,请各位前辈多多指点:
- opengl怎么样才能渲染透明纹理呢
- C#如何向word中动态添加书签
- FileDialog打开以后目录显示为乱码
- C#下这种效果的注释应该怎么实现
- 【C# 每日一题1】猫捉老鼠
//视频类
//
public class cVideo
{
private IntPtr lwndC;//保存无符号句柄
private IntPtr mControlPtr;//保存管理指示器
private int mWidth;
private int mHeight; /// <summary>
/// 初始化视频函数
/// </summary>
/// <param name="handle">显示视频控件的句柄</param>
/// <param name="width">视频宽度</param>
/// <param name="height">视频高度</param>
public cVideo(IntPtr handle, int width, int height)
{
mControlPtr = handle;//显示视频控件的句柄
mWidth = width;//视频宽度
mHeight = height;//视频高
}
/// <summary>
/// 打开视频设备
/// </summary>
public void StartWebCam()
{
byte[] lpszName = new byte[100];
byte[] lpszVer =new byte[100];
VideoAPI.capGetDriverDescriptionA(0,lpszName,100,lpszVer,100);
this.lwndC=VideoAPI.capCreateCaptureWindowA(lpszName,VideoAPI.WS_CHILD|VideoAPI.WS_VISIBLE,0,0,mWidth,mHeight,mControlPtr,0);
if(VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_DRIVER_CONNECT,0,0))
{
VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_SET_PREVIEWRATE,100,0);
VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_SET_PREVIEW,true,0);
} }
/// <summary>
/// 关闭视频设备
/// </summary>
public void CloseWebCam()
{
VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_DRIVER_DISCONNECT,0,0);
}
/// <summary>
/// 拍照
/// </summary>
/// <param name="hWndC">窗口句柄</param>
/// <param name="path">要保存bmp文件的路径</param>
public void GetCamImage(IntPtr hWndC,string path)
{
IntPtr hBmp = Marshal.StringToHGlobalAnsi(path);
VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_SAVEDIB,0,hBmp.ToInt32());
}
}