1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.Windows;
6: using System.Windows.Media;
7: using System.Windows.Controls;
8: using System.Windows.Media.Imaging;
9: using System.Windows.Shapes;
10: using System.IO;
11:
12: namespace SnapShotUsingMediaPlayer
13: {
14: public class MediaPlayerControl : ContentControl
15: {
16: MediaPlayer _MediaPlayer;
17: private Uri _Source = null;
18: public Uri Source
19: {
20: get { return _Source; }
21: set
22: {
23: _Source = value;
24: Play(value);
25: }
26: }
27:
28: public void Play(Uri source)
29: {
30: if (_MediaPlayer == null)
31: {
32: _MediaPlayer = new MediaPlayer();
33:
34: }
35: _MediaPlayer.MediaFailed += new EventHandler<ExceptionEventArgs>(_MediaPlayer_MediaFailed);
36: _MediaPlayer.MediaOpened += new EventHandler(_MediaPlayer_MediaOpened);
37: _MediaPlayer.Open(source);
38: }
39:
40: void _MediaPlayer_MediaOpened(object sender, EventArgs e)
41: {
42: System.Threading.Thread.Sleep(1000);
43: VideoDrawing videoDrawing = new VideoDrawing();
44: videoDrawing.Player = _MediaPlayer;
45: videoDrawing.Rect = new Rect(0, 0, _MediaPlayer.NaturalVideoWidth, _MediaPlayer.NaturalVideoHeight);
46: Rectangle rectangle = new Rectangle();
47: rectangle.Height = this.Height;
48: rectangle.Width = this.Width;
49: Brush brush = new DrawingBrush(videoDrawing);
50: rectangle.Fill = brush;
51: this.Content = rectangle;
52: _MediaPlayer.Play();
53: }
54:
55: void _MediaPlayer_MediaFailed(object sender, ExceptionEventArgs e)
56: {
57: MessageBox.Show("Invalid File");
58: }
59:
60: public string Takesnapshot()
61: {
62: RenderTargetBitmap renderBitmap = new RenderTargetBitmap(300, 300, 96, 96, PixelFormats.Pbgra32);
63: renderBitmap.Render(this);
64: string filename = "Temp" + ".gif";
65: FileStream fs = new FileStream(filename, FileMode.Create);
66: BitmapEncoder encoder = new GifBitmapEncoder();
67: encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
68: encoder.Save(fs);
69: fs.Close();
70: return filename;
71: }
72: }
73: }