利用afoge控件可以来实现usb摄像头播放。在winform下,利用newframe事件,可以实现每一帧的图像处理。
但是如何在wpf下,利用afoge,则有些麻烦。
播放功能是利用
- xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
我现在需要在图像上画一个静态框,最初我也是想通过newframe,给每帧图像都换上框,但是在wpf下newframe无法加入。失败
另一种是 利用Panel.ZIndex,在aforge上面弄一个透明的image,发现wfi这个默认最上层。失败
最后只能用最笨的办法画框。代码如下
xmlns:wf ="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="5"/>
<RowDefinition Height="9*"/>
<RowDefinition Height="5"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="9*"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<wfi:WindowsFormsHost Panel.ZIndex="1" Grid.ColumnSpan="5" Grid.RowSpan="3" Margin="-68,0,68,-69" Grid.Row="2">
<aforge:VideoSourcePlayer x:Name="videoSourcePlayer1" Width="300" Height="360">
</aforge:VideoSourcePlayer>
</wfi:WindowsFormsHost>
<wfi:WindowsFormsHost Panel.ZIndex="2" Grid.Column="1" Grid.Row="1" Grid.RowSpan="3">
<wf:Label BackColor="Green"/>
</wfi:WindowsFormsHost>
<wfi:WindowsFormsHost Panel.ZIndex="2" Grid.Column="3" Grid.Row="1" Grid.RowSpan="3">
<wf:Label BackColor="Green"/>
</wfi:WindowsFormsHost>
<wfi:WindowsFormsHost Panel.ZIndex="2" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3">
<wf:Label BackColor="Green"/>
</wfi:WindowsFormsHost>
<wfi:WindowsFormsHost Panel.ZIndex="2" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="3">
<wf:Label BackColor="Green"/>
</wfi:WindowsFormsHost>
</Grid>