private void Page_Loaded(object sender, RoutedEventArgs e) {
this.videoCaptureElement = new VideoCaptureElement();
this.videoCaptureElement.BeginInit();
this.videoCaptureElement.Width = 568;
this.videoCaptureElement.Height = 364;
//videoCaptureElement position
Canvas.SetTop(videoCaptureElement, 200);
Canvas.SetLeft(videoCaptureElement, 200);
string[] inputNames = MultimediaUtil.VideoInputNames;
this.videoCaptureElement.VideoCaptureSource = inputNames[0];
this.videoCaptureElement.EndInit();
this.videoCaptureElement.Play();
this.CameraRenderLayer.Children.Add(this.videoCaptureElement);
//button event
TakePic.MouseLeftButtonDown += new MouseButtonEventHandler(takePhoto);
}
private void pagePrevious(object sender, RoutedEventArgs e) {
this.NavigationService.Content = new BirthdayPage();
}
private void takePhoto(object sender, RoutedEventArgs e) {
RenderTargetBitmap bmp = new RenderTargetBitmap((int)this.videoCaptureElement.ActualWidth, (int)this.videoCaptureElement.ActualHeight, 96, 96, PixelFormats.Pbgra32);
bmp.Render(this.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:\\" + UserInfoSingleton.sharedInstance().UserName + "pic.jpg";
FileStream fstream = new FileStream(filename, FileMode.Create);
encoder.Save(fstream);
fstream.Close();
videoCaptureElement.Stop();
}
如果我把Canvas.SetTop(videoCaptureElement, 200); Canvas.SetLeft(videoCaptureElement, 200);这两句注释掉,就能正常拍出照片,但是一旦调整了videoCaptureElement的位置拍出的照片就是黑色的