2008年5月8日 星期四

將視訊影像顯示在另一個form中的方式

使用到form有二:
 1. formMain: 程式主視窗, 內含panWebCam, timeWebCam
 2. formWebCam: 視訊影像顯示之視窗, 內含imgWebCam,
       在使用上是依此視窗
樣式動態產生新視窗formWebCamNew

程式流程:
 1. 從WebCam擷取到的影像, 放至formMain中的panWebCam
 2. 產生formWebCamNew, 並開啟視訊
 3. 將panWebCam的影像資訊儲至該視窗imgWebCam

程式內容:
 1. 在formCreate下, 連結但不開啟WebCam, 並產生
formWebCamNew
    hwndVideo = capCreateCaptureWindow(
         (LPSTR) "My Capture Window",
         WS_CHILD | WS_VISIBLE,
         0, 0, 320, 240,
         (HWND) formMain->panWebCam->Handle,
         (int) 1);
    capPreviewRate (hwndVideo, 66);
    capPreview (hwndVideo, false);
    formWebCamNew = new TformWebCam(Application);

 2. 在timeWebCam下,
  (1) 當WebCam未開啟時, 設定
formWebCamNew, 開啟視訊
    formWebCamNew->Show();
    capDriverConnect(hwndVideo, 0);
    formWebCamNew->DoubleBuffered = true;

  (2) 當WebCam開啟時, 將panWebCam資訊放至formWebCamNew
    的imgWebCam
    if (capGrabFrameNoStop(hwndVideo))
     capEditCopy(hwndVideo);
    if (pCB->HasFormat(CF_BITMAP))
    {
     pBitmap->LoadFromClipboardFormat(CF_BITMAP,
                      pCB->GetAsHandle(CF_BITMAP), 0);
     formWebCamNew->imgWebCam->Picture->Bitmap = pBitmap;
     formWebCamNew->imgWebCam->Picture->Bitmap->PixelFormat = pf24bit;
    }

沒有留言: