用于(海康、大华等)录像机的WPF视频播放控件

本文介绍了如何在WPF应用中使用自定义控件来播放海康、大华等录像机的视频。通过在WPF窗口内嵌入Winform Panel,利用录像机SDK的播放接口,实现了视频预览和回放功能。控件结构包括逻辑控制类、默认外观设计和逻辑处理。文章详细讲解了控件的创建、事件处理和应用方法,并展示了实际操作效果。
摘要由CSDN通过智能技术生成


       在电脑上调用海康、大华等录像机的SDK播放接口的时候,需要传入用于视频图像绘制的控件的句柄。但是WPF中的普通控件是没有单独的句柄的。因此,如果需要在WPF中播放录像机的视频(视频预览或者录像回放),其解决思路之一便是在wpf的窗口中嵌入一个winform的Panel控件,然后传入Panel控件的句柄。

为了便于复用,我将其封装成了一个WPF的无外观控件(CustomControl)。


       一 控件整体结构

       如上图所示,整个控件的结构比较简单,一个用于控件逻辑控制的类VideoPlayer,一个用户标识视频播放状态的枚举PlayStatus,一个默认的控件外观文件VideoPlayer.xaml。


       二 默认外观(默认模板)


<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MediaPlayers"
    xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration">

    <Style TargetType="{x:Type local:VideoPlayer}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:VideoPlayer}">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition/>
                                <RowDefinition Height="auto"/>
                            </Grid.RowDefinitions>

                            <Grid >
                                <wfi:WindowsFormsHost x:Name="PART_PanelContainer"/>
                            </Grid>
                            
                            <Grid Grid.Row="1">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition/>
                                </Grid.ColumnDefinitions>

                                <Button x:Name="PART_BTNFastForward" Grid.Column="1" Content="快退" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                                <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值