在用VideoCaptureElement的过程中,不知道怎么获得摄像头的截图,纠结了整整一天,
最终在下面的网站上找到了答案,哈哈。(困的都不清醒的大脑,让我耐下心来看英文,上天还是很优待我的)
例子截图:
XAML:
<Window x:Class="Fish.AccountBook.View.Test.CameraWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="CameraWindow" Height="200" Width="300" xmlns:WPFMediaKit="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="30" /> <RowDefinition Height="auto" /> </Grid.RowDefinitions> <StackPanel Orientation="Horizontal"> <Button Name="button1" Content="截图" Height="23" Width="75" Click="button1_Click" /> </StackPanel> <WPFMediaKit:VideoCaptureElement x:Name="m_VideoCaptureElement" Grid.Row="1" /> </Grid> </Window> 复制代码 CS: 复制代码 public partial class CameraWindow : Window { public CameraWindow() { InitializeComponent(); string[] inputNames = MultimediaUtil.VideoInputNames; m_VideoCaptureElement.VideoCaptureSource = inputNames[0]; } private void button1_Click(object sender, RoutedEventArgs e) { RenderTargetBitmap bmp = new RenderTargetBitmap((int)m_VideoCaptureElement.ActualWidth, (int)m_VideoCaptureElement.ActualHeight, 96, 96, PixelFormats.Rgb24); bmp.Render(m_VideoCaptureElement); BitmapEncoder encoder = new JpegBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bmp)); string now = DateTime.Now.Year + "" + DateTime.Now.Month + "" + DateTime.Now.Day + "" + DateTime.Now.Hour + "" + DateTime.Now.Minute + "" + DateTime.Now.Second; string filename = "D:\" + now + "pic.jpg"; FileStream fstream = new FileStream(filename, FileMode.Create); encoder.Save(fstream); fstream.Close(); } }