天天看點

wpf下,在aforge界面 畫靜态框的實作

利用afoge控件可以來實作usb攝像頭播放。在winform下,利用newframe事件,可以實作每一幀的圖像處理。

但是如何在wpf下,利用afoge,則有些麻煩。

播放功能是利用

  1. 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>
  
           

繼續閱讀