摄像头拍照保存的代码

using   System;  
  using   System.Drawing;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Windows.Forms;  
  using   System.Data;  
  using   System.Runtime.InteropServices;  
  using   System.Drawing.Imaging;  
   
  namespace   CapTureMovie  
  {  
  ///   <summary>  
  ///   Form1   的摘要说明。  
  ///   </summary>  
  public   class   Form1   :   System.Windows.Forms.Form  
  {  
  private   System.Windows.Forms.Button   BtnCapTure;  
  private   System.Windows.Forms.Panel   panel_Vedio;  
  private   int   hHwnd;  
  private   System.Windows.Forms.Button   BtnStop;  
  private   System.Windows.Forms.Label   LbSysMsg;  
  private   System.Windows.Forms.Button   button1;  
   
  public   struct   videohdr_tag  
  {  
  public   byte[]   lpData;  
  public   int   dwBufferLength;  
  public   int   dwBytesUsed;  
  public   int   dwTimeCaptured;  
  public   int   dwUser;  
  public   int   dwFlags;  
  public   int[]   dwReserved;    
   
  }  
  public   delegate   bool   CallBack(int   hwnd,   int   lParam);    
  ///   <summary>  
  ///   必需的设计器变量。  
  ///   </summary>  
  private   System.ComponentModel.Container   components   =   null;  
  [DllImport("avicap32.dll",   CharSet=CharSet.Ansi,   SetLastError=true,   ExactSpelling=true)]  
  public   static   extern   int   capCreateCaptureWindowA([MarshalAs(UnmanagedType.VBByRefStr)]   ref   string   lpszWindowName,   int   dwStyle,   int   x,   int   y,   int   nWidth,   short   nHeight,   int   hWndParent,   int   nID);  
  [DllImport("avicap32.dll",   CharSet=CharSet.Ansi,   SetLastError=true,   ExactSpelling=true)]  
  public   static   extern   bool   capGetDriverDescriptionA(short   wDriver,   [MarshalAs(UnmanagedType.VBByRefStr)]   ref   string   lpszName,   int   cbName,   [MarshalAs(UnmanagedType.VBByRefStr)]   ref   string   lpszVer,   int   cbVer);  
  [DllImport("user32",   CharSet=CharSet.Ansi,   SetLastError=true,   ExactSpelling=true)]  
  public   static   extern   bool   DestroyWindow(int   hndw);  
  [DllImport("user32",   EntryPoint="SendMessageA",   CharSet=CharSet.Ansi,   SetLastError=true,   ExactSpelling=true)]  
  public   static   extern   int   SendMessage(int   hwnd,   int   wMsg,   int   wParam,   [MarshalAs(UnmanagedType.AsAny)]   object   lParam);  
  [DllImport("user32",   CharSet=CharSet.Ansi,   SetLastError=true,   ExactSpelling=true)]  
  public   static   extern   int   SetWindowPos(int   hwnd,   int   hWndInsertAfter,   int   x,   int   y,   int   cx,   int   cy,   int   wFlags);  
  [DllImport("vfw32.dll")]  
  public   static   extern   string   capVideoStreamCallback(int   hwnd,videohdr_tag   videohdr_tag);  
  [DllImport("vicap32.dll",   CharSet=CharSet.Ansi,   SetLastError=true,   ExactSpelling=true)]  
  public   static   extern   bool   capSetCallbackOnFrame(int   hwnd,string   s);  
   
  public   Form1()  
  {  
  //  
  //   Windows   窗体设计器支持所必需的  
  //  
  InitializeComponent();  
   
  //  
  //   TODO:   在   InitializeComponent   调用后添加任何构造函数代码  
  //  
  }  
   
  ///   <summary>  
  ///   清理所有正在使用的资源。  
  ///   </summary>  
  protected   override   void   Dispose(   bool   disposing   )  
  {  
  if(   disposing   )  
  {  
  if   (components   !=   null)    
  {  
  components.Dispose();  
  }  
  }  
  base.Dispose(   disposing   );  
  }  
   
  #region   Windows   窗体设计器生成的代码  
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {  
  System.Resources.ResourceManager   resources   =   new   System.Resources.ResourceManager(typeof(Form1));  
  this.panel_Vedio   =   new   System.Windows.Forms.Panel();  
  this.BtnCapTure   =   new   System.Windows.Forms.Button();  
  this.BtnStop   =   new   System.Windows.Forms.Button();  
  this.LbSysMsg   =   new   System.Windows.Forms.Label();  
  this.button1   =   new   System.Windows.Forms.Button();  
  this.SuspendLayout();  
  //    
  //   panel_Vedio  
  //    
  this.panel_Vedio.BackgroundImage   =   ((System.Drawing.Image)(resources.GetObject("panel_Vedio.BackgroundImage")));  
  this.panel_Vedio.BorderStyle   =   System.Windows.Forms.BorderStyle.Fixed3D;  
  this.panel_Vedio.Location   =   new   System.Drawing.Point(8,   16);  
  this.panel_Vedio.Name   =   "panel_Vedio";  
  this.panel_Vedio.Size   =   new   System.Drawing.Size(288,   224);  
  this.panel_Vedio.TabIndex   =   0;  
  //    
  //   BtnCapTure  
  //    
  this.BtnCapTure.Location   =   new   System.Drawing.Point(24,   256);  
  this.BtnCapTure.Name   =   "BtnCapTure";  
  this.BtnCapTure.TabIndex   =   1;  
  this.BtnCapTure.Text   =   "图象采集";  
  this.BtnCapTure.Click   +=   new   System.EventHandler(this.BtnCapTure_Click);  
  //    
  //   BtnStop  
  //    
  this.BtnStop.Enabled   =   false;  
  this.BtnStop.Location   =   new   System.Drawing.Point(136,   256);  
  this.BtnStop.Name   =   "BtnStop";  
  this.BtnStop.TabIndex   =   1;  
  this.BtnStop.Text   =   "停止采集";  
  this.BtnStop.Click   +=   new   System.EventHandler(this.BtnStop_Click);  
  //    
  //   LbSysMsg  
  //    
  this.LbSysMsg.Location   =   new   System.Drawing.Point(16,   296);  
  this.LbSysMsg.Name   =   "LbSysMsg";  
  this.LbSysMsg.Size   =   new   System.Drawing.Size(240,   23);  
  this.LbSysMsg.TabIndex   =   2;  
  //    
  //   button1  
  //    
  this.button1.Location   =   new   System.Drawing.Point(304,   48);  
  this.button1.Name   =   "button1";  
  this.button1.TabIndex   =   3;  
  this.button1.Text   =   "button1";  
  this.button1.Click   +=   new   System.EventHandler(this.button1_Click);  
  //    
  //   Form1  
  //    
  this.AutoScaleBaseSize   =   new   System.Drawing.Size(6,   14);  
  this.ClientSize   =   new   System.Drawing.Size(400,   357);  
  this.Controls.Add(this.button1);  
  this.Controls.Add(this.LbSysMsg);  
  this.Controls.Add(this.BtnCapTure);  
  this.Controls.Add(this.panel_Vedio);  
  this.Controls.Add(this.BtnStop);  
  this.Name   =   "Form1";  
  this.Text   =   "Form1";  
  this.ResumeLayout(false);  
   
  }  
  #endregion  
   
  ///   <summary>  
  ///   应用程序的主入口点。  
  ///   </summary>  
  [STAThread]  
  static   void   Main()    
  {  
  Application.Run(new   Form1());  
  }  
   
  private   void   BtnCapTure_Click(object   sender,   System.EventArgs   e)  
  {  
  this.OpenCapture();  
   
  }  
  private   void   OpenCapture()  
  {  
   
  int   intWidth=this.panel_Vedio.Width;  
  int   intHeight=this.panel_Vedio.Height;  
  int   intDevice=0;  
  string   refDevice=intDevice.ToString();  
  hHwnd=Form1.capCreateCaptureWindowA(ref   refDevice,1342177280,0,0,640,480,this.panel_Vedio.Handle.ToInt32(),0);  
  this.LbSysMsg.Text="";  
  this.LbSysMsg.Text+="驱动:"+refDevice;  
  if(Form1.SendMessage(hHwnd,0x40a,intDevice,0)>0)  
  {  
  Form1.SendMessage(this.hHwnd,0x435,-1,   0);  
  Form1.SendMessage(this.hHwnd,0x434,0x42,   0);  
  Form1.SendMessage(this.hHwnd,0x432,-1,   0);  
  Form1.SetWindowPos(this.hHwnd,1,0,0,intWidth,intHeight,6);  
  this.BtnCapTure.Enabled=false;  
  this.BtnStop.Enabled=true;  
  }  
  else  
  {  
  Form1.DestroyWindow(this.hHwnd);  
  this.BtnCapTure.Enabled=false;  
  this.BtnStop.Enabled=true;  
  }  
  }  
   
  private   void   BtnStop_Click(object   sender,   System.EventArgs   e)  
  {  
  Form1.SendMessage(this.hHwnd,   0x40b,   0,   0);  
  Form1.DestroyWindow(this.hHwnd);  
  this.BtnCapTure.Enabled=true;  
  this.BtnStop.Enabled=false;  
  }  
   
  private   void   button1_Click(object   sender,   System.EventArgs   e)  
  {  
  try  
  {  
  Form1.SendMessage(this.hHwnd,0x41e,0,0);  
  IDataObject   obj1   =   Clipboard.GetDataObject();  
  if   (obj1.GetDataPresent(typeof(Bitmap)))  
  {  
                                      Image   image1   =   (Image)   obj1.GetData(typeof(Bitmap));  
                                    //   this.panel_Vedio.Image   =   image1;  
                                    //   this.ClosePreviewWindow();  
                                       
      SaveFileDialog   SaveFileDialog1=new   SaveFileDialog();  
                                      if   (SaveFileDialog1.ShowDialog()   ==   DialogResult.OK)  
                                      {  
                                                  image1.Save(SaveFileDialog1.FileName,   ImageFormat.Bmp);  
                                      }  
    }  
  }  
  catch  
  {  
  }  
  }  
  }  
  }  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值