WPFMediaKit摄像头处理

 

       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培训、期待与您交流! ----------------------
posted @ 2013-06-10 12:56  小宁UP  阅读(6370)  评论(6编辑  收藏  举报