我用视频采集卡把视频流传到窗体上来了,但是不知怎么才可以抓图,也就是把图像保存到另一个地方.各位大哥请帮帮忙,谢了.

解决方案 »

  1.   

    关注!!!!!!!!!!!!!!!!我帮你顶!up up up up up up up up up up up up up up
      

  2.   

    HEO HEO ,没做过哦,帮你顶一下
      

  3.   

    Option ExplicitPrivate Declare Function bitblt Lib "gdi32" Alias "BitBlt" (ByVal hdestdc As Long, ByVal x As Long, ByVal y As Long, ByVal nwidth As Long, ByVal nheight As Long, ByVal hsrcdc As Long, ByVal xsrc As Long, ByVal ysrc As Long, ByVal dwrop As Long) As LongPrivate Declare Function createcompatibledc Lib "gdi32" Alias "CreateCompatibleDC" (ByVal hdc As Long) As Long
    Private Declare Function createcompatiblebitmap Lib "gdi32" Alias "CreateCompatibleBitmap" (ByVal hdc As Long, ByVal nwidth As Long, ByVal nheight As Long) As Long
    Private Declare Function selectobject Lib "gdi32" Alias "SelectObject" (ByVal hdc As Long, ByVal hobject As Long) As Long
    Private Declare Function deleteobject Lib "gdi32" Alias "DeleteObject" (ByVal hobject As Long) As LongPrivate Declare Function openclipboard Lib "user32" Alias "OpenClipboard" (ByVal hwnd As Long) As Long
    Private Declare Function closeclipboard Lib "user32" Alias "CloseClipboard" () As Long
    Private Declare Function setclipboarddata Lib "user32" Alias "SetClipboardData" (ByVal wformat As Long, ByVal hmem As Long) As Long
    Private Declare Function emptyclipboard Lib "user32" Alias "EmptyClipboard" () As Long
    Private Const cf_bitmap = 2'Picture1为播放视频流的PictureBox
    Private Sub command1_click()
        Dim lhdc As Long
        Dim lhbmp As Long
        Dim lhbmpold As Long    Me.ScaleMode = 3 '设为3-Pixels
        lhdc = createcompatibledc(Me.hdc)
        If (lhdc <> 0) Then
            lhbmp = createcompatiblebitmap(Me.hdc, Picture1.Width, Picture1.Height)
            If (lhbmp <> 0) Then
                lhbmpold = selectobject(lhdc, lhbmp)
          
                bitblt lhdc, 0, 0, Picture1.Width, Picture1.Height, Me.hdc, Picture1.Left, Picture1.Top, vbSrcCopy
          
                selectobject lhdc, lhbmpold
                
                emptyclipboard
                openclipboard 0
                setclipboarddata cf_bitmap, lhbmp
                closeclipboard
               
            End If
        
            deleteobject lhdc
            SavePicture Clipboard.GetData(vbCFBitmap), "c:\1.bmp"
        End If
    End Sub
      

  4.   

    1、假设p1为播放视频流的PictureBox,在设计阶段:p1.AutoRedraw=False  
    2、再在窗体上放p2的PictureBox,他的AutoRedraw=False,p2可隐藏。
    3、在p1中播放视频。
    4、播放同时执行如下代码进行捕捉
    Private Declare Function BitBlt Lib "GDI32" (ByVal hDCDest As Long, ByVal XDest As Long, ByVal YDest As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hDCSrc As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) As Long
    Dim i
    p2.AutoRedraw = -1
    i = BitBlt(p2.hDC, 0, 0, 源宽, 源高, p1.hDC, 0, 0, &HCC0020)
    p2.AutoRedraw = 0
    SavePicture p2.Image, App.Path & "\text.bmp"
      

  5.   

    1、假设p1为播放视频流的PictureBox,在设计阶段:p1.AutoRedraw=False  
    2、再在窗体上放p2的PictureBox,他的AutoRedraw=False,p2可隐藏。
    3、在p1中播放视频。
    4、播放同时执行如下代码进行捕捉
    Private Declare Function BitBlt Lib "GDI32" (ByVal hDCDest As Long, ByVal XDest As Long, ByVal YDest As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hDCSrc As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) As Long
    Dim i
    p2.AutoRedraw = -1
    i = BitBlt(p2.hDC, 0, 0, 源宽, 源高, p1.hDC, 0, 0, &HCC0020)
    p2.AutoRedraw = 0
    SavePicture p2.Image, App.Path & "\text.bmp"
      

  6.   

    Picture1的AutoRedraw属性要设为True
      

  7.   

    我己将Picture1的AutoRedraw属性设为True了啊,怎么还是黑的?请高手指点~
      

  8.   

    窗体的AutoRedraw属性要设为false
      

  9.   

    是这样的啊,我己把窗体的AutoRedraw属性要设为false,Picture1的AutoRedraw属性设为TrueB了啊,
      

  10.   

    问题己解决在此非常感谢sxs69().