WPFMediaKit可以在wpf中使用攝像頭的安裝包,原來感覺很神秘的東西,現在感覺也挺簡單了,其實工作之中,你不可能什么都會,什么都學到,要學會解決問題的技巧,遇到問題如何去找去問。
首先把添加WPFMediaKit.dll到項目中去,然后添加對其的引用。
1, 然后在wpf的xmal中添加一句代碼如下:
1 xmlns:wpfmedia="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"
2, 在xmal中手動添加控件,用於顯示預覽的畫面。
1 <wpfmedia:VideoCaptureElement Name="vce" Height="200" DockPanel.Dock="Top"> 2 3 </wpfmedia:VideoCaptureElement>
3,然后是后台代碼:現在onload里:
1 private void Window_Loaded(object sender, RoutedEventArgs e) 2 { 3 //現在電腦上裝的所有攝像頭中,選擇一個攝像頭。 4 cb.ItemsSource = MultimediaUtil.VideoInputNames; 5 //設置第0個攝像頭為默認攝像頭。 6 if (MultimediaUtil.VideoInputNames.Length > 0) 7 { 8 cb.SelectedIndex = 0; 9 } 10 else 11 { 12 MessageBox.Show("電腦沒有安裝任何攝像頭"); 13 } 14 } 15 16 private void cb_SelectionChanged(object sender, SelectionChangedEventArgs e) 17 { 18 vce.VideoCaptureSource = (string)cb.SelectedItem; 19 }
4,然后是拍照,保存照片啦。
1 private void Button_Click(object sender, RoutedEventArgs e) 2 { 3 //抓取控件做成圖片 4 RenderTargetBitmap bmp = new RenderTargetBitmap( 5 (int)vce.ActualWidth, (int)vce.ActualHeight, 6 96, 96, PixelFormats.Default); 7 bmp.Render(vce); 8 BitmapEncoder encoder = new JpegBitmapEncoder(); 9 encoder.Frames.Add(BitmapFrame.Create(bmp)); 10 using (MemoryStream ms = new MemoryStream()) 11 { 12 encoder.Save(ms); 13 byte[] captureData = ms.ToArray(); 14 //保存圖片 15 File.WriteAllBytes("d:/1.jpg", captureData); 16 } 17 vce.Pause(); 18 }
這樣就OK了,看一下效果吧。

效果好不錯吧。
----------------------
ASP.Net+Android+IOS開發、
.Net培訓、期待與您交流! ----------------------
