利用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>