⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmavicapture.frm

📁 VB6.0编写的医院影像系统
💻 FRM
📖 第 1 页 / 共 3 页
字号:
        Frame3.Top = Frame3.Top - Delta
        Frame4.Top = Frame4.Top - Delta
        ibPic.Top = ibPic.Top - Delta
    End If
    
    '初始化捕捉控件
    Dim HWndCapture As Long
    HWndCapture = wvAvi.Startup
    wvVidX.Startup HWndCapture
    
    SetLvwPlainHead lvwVideo, Me.hwnd
    
    '表明本窗体已经加载
    Loaded = True
    
    'IniUS.LoadFormPlace Me
    Me.WindowState = 2
        
    Id = 0
        
    '设置视频属性
    SetVideoProp
    
    '判断frmReport是否加载
    With frmReport
        'If .Loaded And .WorkType = "Add" Then
        If .Loaded Then
            If .txtUSNo.Text = vbNullString Then
                MsgBox "请在信息窗体中输入合法的超声号!", vbInformation + vbOKOnly, "提示"
                Unload Me
                Exit Sub
            Else
                US_NO = .txtUSNo.Text
                Me.sbrPicView.Panels("US_NO").Text = "当前超声号: " & US_NO
                
            End If
        Else
            US_NO = vbNullString
            Me.sbrPicView.Panels("US_NO").Text = "独立图象捕捉"
        End If
    End With
    
    '根据US_NO是否为空判断目前的状态
    If US_NO <> vbNullString Then
        wvAvi.VideoFileName = gstrTempDir & "\" & US_NO & "_1X.AVI"
        
'        '对已经采集过的视频,导入进来
'        If FSO.FileExists(wvAvi.VideoFileName) And frmReport.VideoFileName <> vbNullString Then
'            cmdPlay.Enabled = True
'            chkSaveVideo.Enabled = True
'            chkSaveVideo.Value = 1
'        End If
        
        Dim iTemp As Integer
        
        With frmReport
            '对已经采集过的视频,导入进来
            lvwVideo.ListItems.Clear
            For Each cIF In .VFs
                
            Next cIF
        
        
            '对已经采集过的图象,导入进来
            '先清除原先的IF集合
            ibPic.ImageFiles.Clear
            For Each cIF In .IFs
                If Me.ibPic.ShowAttachInfo Then
                    If cIF.TagSave Then
                        Set IFTemp = ibPic.ImageFiles.Add(cIF.FileFullName)
                        IFTemp.TagSound = cIF.TagSound
                        IFTemp.TagSave = cIF.TagSave
                        IFTemp.TagPrint = cIF.TagPrint
                        If USV.AllowAudio Then IFTemp.SoundFile = cIF.SoundFile
                        iTemp = Val(Mid(cIF.FileMainName, InStr(1, cIF.FileMainName, "_") + 1))
                        If iTemp > Id Then Id = iTemp
                    End If
                Else
                    .IFs.Add cIF.FileFullName
                End If
            Next cIF
            ibPic.ShowImage
        End With
    Else
        wvAvi.VideoFileName = gstrTempDir & "\1X.AVI"
    End If
    
    
    '设置屏幕鼠标
    Screen.MousePointer = vbNormal
    
End Sub

Public Sub StartCapture()
    
    '--------------
    '开始捕捉
    '--------------
    
    Dim ErrCode As Integer
        
    Screen.MousePointer = vbHourglass
        
    ErrCode = wvAvi.StartContinuousCapture
    If ErrCode > 0 Then
        MsgBox "由于错误: " & ErrCode & ", 该操作不能完成! ", vbOKOnly + vbExclamation, "错误"
    End If
    
    Screen.MousePointer = vbNormal
    
End Sub

Public Sub StopCapture()
    
    '-------------
    '开始捕捉
    '-------------
    
    Dim ErrCode As Integer
    
    ErrCode = wvAvi.StopCapture
    If ErrCode > 0 Then
        MsgBox "由于错误: " & ErrCode & ", 该操作不能完成! ", vbOKOnly + vbExclamation, "错误"
    End If
    
End Sub

Public Sub StillCapture(Optional UsingFrame As Boolean = False)
    
    '--------------
    '捕捉静态图象
    '--------------
    
    Dim ErrCode As Integer
    Dim strFile As String           '图形文件名
    Dim strFileExtension As String  '图形的后缀,根据是BMP还是JPG决定
        
    Select Case wvAvi.ImageFileFormat
        Case 0  'BMP
            strFileExtension = ".BMP"
        Case 1  'JPG
            strFileExtension = ".JPG"
        Case Else
    End Select
        
    Screen.MousePointer = vbHourglass
    
    Id = Id + 1
    
    '根据US_NO判断当前的状态
    If US_NO <> vbNullString Then
        'strFile = gstrTempDir & "\" & US_NO & "_" & Format(ID) & ".BMP"
        strFile = gstrTempDir & "\" & Format(Id) & strFileExtension
    Else
        strFile = gstrTempDir & "\" & Format(Id) & strFileExtension
    End If
    
    If UsingFrame Then
        ErrCode = wvAvi.CaptureFrameToFile(strFile)
    Else
        ErrCode = wvAvi.CaptureStillToFile(strFile)
    End If
    
    If ErrCode > 0 Or ErrCode = -2 Or ErrCode = -7 Then
        MsgBox "由于错误: " & ErrCode & ", 该操作不能完成! ", vbOKOnly + vbExclamation, "错误"
        Id = Id - 1
        Screen.MousePointer = vbNormal
        Exit Sub
    End If
        
    '加入到IB控件中
    Dim cIF As ImageFile
    
    Set cIF = ibPic.ImageFiles.Add(strFile)
    cIF.TagSave = True
    ibPic.ShowImage
    
    '设置已经采集图片的标志
    HasCapture = True

    Screen.MousePointer = vbNormal
    
    '释放对象的引用
    
End Sub

Public Sub SetVideoProp()
    
    '----------------------------
    '设置视频属性
    '----------------------------
    
    '读取视频设置
    With wvAvi
        .PreviewFrameRate = gintPreviewFrameRate
        .FrameRate = gintFrameRate
        .FrameLimit = glngFrameLimit
        .TimeLimit = glngTimeLimit
        '.VideoWidth = gintVideoWidth
        '.VideoHeight = gintVideoHeight
        .SetVideoWidthAndHeight gintVideoWidth, gintVideoHeight
        .StillHeight = gintStillHeight
        .StillWidth = gintStillWidth
        .VideoCodec = gstrVideoCodec
        .VideoQuality = 100 / gintVideoCompressRate
        .StillImageType = gintStillImageType
        .ImageFileFormat = gintStillImageFormat
        .EnableStatusEvents = True
        
        'Audio
        .AudioCaptureOn = gbAudioCaptureOn
        .AudioCaptureStereo = gbAudioCaptureStereo
        .AudioCapture8Bit = gbAudioCapture8Bit
        .AudioCaptureSampleRate = gintAudioCaptureSampleRate
        
        Me.sbrPicView.Panels("Info").Text = "视频: " & .VideoWidth & "x" & .VideoHeight & "    静态图象: " & .StillWidth & "x" & .StillHeight
        .Move 0, 0, .VideoWidth * Screen.TwipsPerPixelX, .VideoHeight * Screen.TwipsPerPixelY
        Form_Resize

    End With
    
    '调整VidX的设置
    With wvVidX
        .SetBrightness gintBrightness
        .SetContrast gintContrast
        .SetHue gintHue
        .SetSaturation gintSaturation
        .SetSource gintVideoSource
    End With
    
End Sub

Private Sub Form_Resize()
    
    '---------------------------------------
    '当窗体大小改变时,重新设置控件的位置
    '---------------------------------------
    
    On Error Resume Next
    
    fraVideo.Move 0, 0, Me.width - Picture1.width - 120 - 60, Me.height - Me.sbrPicView.height - Me.picCommand.height - 405
    wvAvi.Move (fraVideo.width - wvAvi.width) / 2, (fraVideo.height - wvAvi.height) / 2
    
End Sub

Private Sub Form_Unload(Cancel As Integer)
    
    '--------------
    '当窗体卸载时
    '--------------
    Dim Ret As Integer
    
    '如果有采图,则先询问是否真的退出
    If HasCapture And Not bNormalExit Then
        Ret = MsgBox("您已经采集了图片或视频,真的退出图象采集功能吗?", vbYesNo + vbQuestion, "确认退出")
        Select Case Ret
            Case vbYes
                
            Case vbNo
                Cancel = True
                Exit Sub
        End Select
    End If
    
    IniUS.SaveFormPlace Me
    
    '清空初始变量
    HasCapture = False
    bNormalExit = False
    
    Loaded = False
    CurrentID = 0
    Id = 0
    VideoID = 0
    lFrames = 0
    US_NO = vbNullString
    LoadExist = False
    
End Sub

Private Sub ibPic_ActionComplete()
    
    '将焦点转移到静态捕捉按钮上
    cmdOK.SetFocus

End Sub

Private Sub ibPic_BeforePrintSingleImage()
    
    '--------------------------
    '显示超声号和病人信息
    '--------------------------
    On Error GoTo ErrHandle
    
    ibPic.TagString = vbNullString
    
    '当打印单幅图片时,输入当前报告的信息(超声号和病人姓名)
    If frmReport.Loaded Then
        With frmReport
            ibPic.TagString = "超声号:" & .txtUSNo.Text
            ibPic.TagString = ibPic.TagString & "  病人姓名:" & .txtSickName.Text
        End With
    End If
    
    Exit Sub

ErrHandle:
    Exit Sub

End Sub

Private Sub ibPic_Message(strMsg As String)
    
    '显示消息
    Me.sbrPicView.Panels("Pic").Text = strMsg

End Sub

Public Sub ibPic_SelectChanged()
    
    '当选择的图片发生变化时,要更新对应的复选框
    Dim bEnable As Boolean
    
    '当选择为单幅图片时允许显示
    bEnable = (ibPic.SelectedItems.Count = 1)
    chkSave.Enabled = bEnable
    chkSound.Enabled = bEnable
    chkPrint.Enabled = bEnable
    lblImage.Caption = vbNullString
    lblSound.Caption = vbNullString
    cmdSaveAs.Enabled = bEnable
    cmdImageSound.Enabled = bEnable
    
    '单幅图片时显示信息
    Dim cIF As ImageFile
    If bEnable Then
        Set cIF = ibPic.SelectedImage
        With cIF
            bChangingImage = True
            chkSave.Value = Abs(.TagSave)
            chkSound.Value = Abs(.TagSound)
            chkPrint.Value = Abs(.TagPrint)
            lblImage.Caption = .FileName
            If .TagSound Then lblSound.Caption = .FileMainName & ".WAV"
            bChangingImage = False
        End With
    End If
    
    '释放对象
    Set cIF = Nothing
    
End Sub

Private Sub lvwVideo_DblClick()
    
    '-----------------------------
    '等于播放
    '-----------------------------
    cmdPlay_Click
    
End Sub

Private Sub optPreview_Click(Index As Integer)
    '-----------------------------
    '设置预览的优先级
    '-----------------------------
       
    With wvAvi
        Select Case Index
            Case 0      '暂停
                .PreviewPriority = 0
                cmdStartCapture.Visible = False
                cmdStopCapture.Visible = True
                cmdStillImage.Visible = True
                cmdPlay.Visible = True
                cmdVideoProp.Visible = True
            
            Case 1      '正常
                .PreviewPriority = 50
                cmdStartCapture.Visible = True
                cmdStopCapture.Visible = True
                cmdStillImage.Visible = True
                cmdPlay.Visible = True
                cmdVideoProp.Visible = True
                
            Case 2      '高性能
                .PreviewPriority = 100
                cmdStartCapture.Visible = False
                cmdStopCapture.Visible = False
                cmdStillImage.Visible = False
                cmdPlay.Visible = False
                cmdVideoProp.Visible = False
        End Select
    End With

End Sub

Private Sub Picture1_Resize()
    
    '----------------------------
    '重设工具的位置
    '----------------------------
    
    ibPic.height = Picture1.ScaleHeight - ibPic.Top
    
End Sub

Private Sub wvAvi_CaptureStatus(ByVal Id As Long, ByVal message As String)
    
    '----------------------------
    '显示捕捉信息,记录帧数
    '----------------------------
    
    lblInfo.Caption = message
    lFrames = lFrames + 1
    
End Sub

Public Sub VideoCapture()
    
    '-----------------------------------
    '动态视频捕捉
    '-----------------------------------
    
    If FSO.FileExists(wvAvi.VideoFileName) = False Then Exit Sub
    Dim itmX As ListItem
    Set itmX = lvwVideo.ListItems.Add(, wvAvi.VideoFileName, GetFileName(wvAvi.VideoFileName), , "Video")
    itmX.Tag = wvAvi.VideoFileName
    itmX.SubItems(1) = Format(FileSize(wvAvi.VideoFileName), "###,###,###,###,###")
    itmX.SubItems(2) = Format(lFrames, "###,###,###,###,###")
    If USV.AllowAudio Then itmX.SubItems(3) = vbNullString
'    itmX.ListSubItems(3).ReportIcon = "Sound"
    
    Set lvwVideo.SelectedItem = itmX
    itmX.EnsureVisible
    lvwVideo.Refresh
    
    '设置已经采集图片的标志
    HasCapture = True
    
    
End Sub

Public Function GetFreeAviFileName()
    
    '-------------------------------
    '获取可使用的视频文件名称(在TempDir下)
    '-------------------------------
    Dim i As Long
    
    i = 1
    
    Do While FSO.FileExists(gstrTempDir & "\" & Format(i) & ".AVI")
        i = i + 1
    Loop
    
    GetFreeAviFileName = gstrTempDir & "\" & Format(i) & ".AVI"
    
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -