zoukankan      html  css  js  c++  java
  • 发个小程序希望有人需要(操作摄像头)

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;

    namespace WindowsFormsApplication24
    {
       
    public partial class Form1 : Form
        {
           
    public Form1()
            {
                InitializeComponent();
            }
         
           
    const short WM_CAP = 1024;
           
    const int WM_CAP_DRIVER_CONNECT = WM_CAP + 10;
           
    const int WM_CAP_DRIVER_DISCONNECT = WM_CAP + 11;
           
    const int WM_CAP_EDIT_COPY = WM_CAP + 30;
           
    const int WM_CAP_SET_PREVIEW = WM_CAP + 50;
           
    const int WM_CAP_SET_PREVIEWRATE = WM_CAP + 52;
           
    const int WM_CAP_SET_SCALE = WM_CAP + 53;
           
    const int WS_CHILD = 1073741824;
           
    const int WS_VISIBLE = 268435456;
           
    const short SWP_NOMOVE = 2;
           
    const short SWP_NOSIZE = 1;
           
    const short SWP_NOZORDER = 4;
           
    const short HWND_BOTTOM = 1;
           
    int iDevice = 0;
           
    int hHwnd;
            [System.Runtime.InteropServices.DllImport(
    "user32", EntryPoint = "SendMessageA")]
           
    static extern int SendMessage(int hwnd, int wMsg, int wParam, [MarshalAs(UnmanagedType.AsAny)]
               
    object lParam);
            [System.Runtime.InteropServices.DllImport(
    "user32", EntryPoint = "SetWindowPos")]
           
    static extern int SetWindowPos(int hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);
            [System.Runtime.InteropServices.DllImport(
    "user32")]
           
    static extern bool DestroyWindow(int hndw);
            [System.Runtime.InteropServices.DllImport(
    "avicap32.dll")]
           
    static extern int capCreateCaptureWindowA(string lpszWindowName, int dwStyle, int x, int y, int nWidth, short nHeight, int hWndParent, int nID);
            [System.Runtime.InteropServices.DllImport(
    "avicap32.dll")]
           
    static extern bool capGetDriverDescriptionA(short wDriver, string lpszName, int cbName, string lpszVer, int cbVer);
           
    private void OpenPreviewWindow()
            {
               
    int iHeight = 320;
               
    int iWidth = 200;
               
    //
               
    //  Open Preview window in picturebox
               
    //
                hHwnd = capCreateCaptureWindowA(iDevice.ToString(), (WS_VISIBLE | WS_CHILD), 0, 0, 640, 480, picCapture.Handle.ToInt32(), 0);
               
    //
               
    //  Connect to device
               
    //
                if (SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0) == 1)
                {
                   
    //
                   
    // Set the preview scale
                   
    //
                    SendMessage(hHwnd, WM_CAP_SET_SCALE, 1, 0);
                   
    //
                   
    // Set the preview rate in milliseconds
                   
    //
                    SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0);
                   
    //
                   
    // Start previewing the image from the camera
                   
    //
                    SendMessage(hHwnd, WM_CAP_SET_PREVIEW, 1, 0);
                   
    //
                   
    //  Resize window to fit in picturebox
                   
    //
                    SetWindowPos(hHwnd, HWND_BOTTOM, 0, 0, iWidth, iHeight, (SWP_NOMOVE | SWP_NOZORDER));
                }
               
    else
                {
                   
    //
                   
    //  Error connecting to device close window
                   
    // 
                    DestroyWindow(hHwnd);
                }
            }
           
    private void ClosePreviewWindow()
            {
               
    //
               
    //  Disconnect from device
               
    //
                SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, iDevice, 0);
               
    //
               
    //  close window
               
    //
                DestroyWindow(hHwnd);
            }
        

           
    private void button1_Click(object sender, EventArgs e)
            {
                iDevice
    = int.Parse(device_number_textBox.Text);
                OpenPreviewWindow();
            }
        }
    }

  • 相关阅读:
    pat 甲级 1065. A+B and C (64bit) (20)
    pat 甲级 1064. Complete Binary Search Tree (30)
    pat 甲级 1010. Radix (25)
    pat 甲级 1009. Product of Polynomials (25)
    pat 甲级 1056. Mice and Rice (25)
    pat 甲级 1078. Hashing (25)
    pat 甲级 1080. Graduate Admission (30)
    pat 甲级 团体天梯 L3-004. 肿瘤诊断
    pat 甲级 1099. Build A Binary Search Tree (30)
    Codeforce 672B. Different is Good
  • 原文地址:https://www.cnblogs.com/bingyun84/p/1738130.html
Copyright © 2011-2022 走看看