&g
Olá,
Hoje vou mostrar para vocês como capturar as imagens camera do usuário no Silverlight.
Primeiro vamos ao XAML:
1: <UserControl x:Class="SLWebCam.MainPage"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5: xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6: mc:Ignorable="d"
7: d:DesignHeight="550"t; d:DesignWidth="700"
-CRLF-->
8: Loaded="UserControl_Loaded">
9:
10: <Grid x:Name="LayoutRoot" Background="White">
11: <StackPanel>
12: <Grid Width="640" Height="480">
13: <Rectangle Name="Viewport" Stroke="Black" StrokeThickness="2" />
14: </Grid>
15: <Button Content="IniciarCaptura" HorizontalAlignment="Center" Click="Button_Click" />
16: </StackPanel>
17: </Grid>
18: </UserControl>
Notem que temos neste XAML apenas 2 controles, 1 Rectangle, que servirá de ViewPort para a câmera ou seja, onde será exibida a imagem da camera e um obtão que irá disparar o início da captura.
Agora vamos ao código:
1: using System.Windows;
2: using System.Windows.Controls;
3: using System.Windows.Media;
4:
5: namespace SLWebCam
6: {
7: public partial class MainPage : UserControl
8: {
9: CaptureSource cpsVideo;
10:
11: public MainPage()
12: {
13: InitializeComponent();
14: }
15:
16: private void UserControl_Loaded(object sender, RoutedEventArgs e)
17: {
18: // Instancia o objeto que manipula a WebCam
19: cpsVideo = new CaptureSource();
20: // Define qual webcam será o alvo do objeto, no caso a câmera padrão do Sistema
21: cpsVideo.VideoCaptureDevice = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();
22:
23: //Cria o objeto que recebe os dados do video
24: VideoBrush vbsVideo = new VideoBrush();
25: vbsVideo.SetSource(cpsVideo);
26: // Preenche o retangulo com os dados capturados do video
27: Viewport.Fill = vbsVideo;
28: }
29:
30: private void Button_Click(object sender, RoutedEventArgs e)
31: {
32: // Efetua a requisição de acesso a WebCam
33: if (CaptureDeviceConfiguration.RequestDeviceAccess())
34: {
35: cpsVideo.Start();
36: }
37: }
38: }
39: }
Os grandes objetos que fazem a mágica são o CaptureSource, CaptureDeviceConfiguration e o VideoBrush.
Primeiro, instanciamos o CaptureSource e definimos qual camera ele irá utilizar atraves do CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice().
Depois criamos o VideoBrush e informamos a ele que sua fonte de imagens é o recém-criado CaptureSource.
Definimos que a saída do VideoBrush será o retangulo que criamos no XAML.
Pedimos a permissão do usuário para usar a câmera e pronto!!!
Muito easy esse tal de Silverlight.
08004986-df53-41ad-ab3b-eff343c70907|2|3.0

Desde o mês passado, a Microsoft tem lançado alguns spoilers referentes ao Silverlight4.
Dois deles me chamaram a atenção:
1) A incorporação de direitos autorais sobre streaming. Ou seja, o suporte a direitos de transmissão de vídeo vai ser nativo. Isso é muito interessante, principalmente quando pensamos em um futuro próximo onde as locadoras começarão a trabalhar em ambiente virtual, fornecendo a locação de filmes via Streaming.
2) Multicas de vídeos!!! Isso vai ser legal. Você poderá criar aplicações de conferências onde o streaming é enviado simultaneamente a diversos endereços.
Enfim, a Microsoft me parece estar atacando o mercado de RIA com soluções para uma nova geração de aplicativos baseados em vídeos.
A concorrencia com o Flash em sites de propaganda ainda me parece uma causa perdida, porem em aplicações orientadas a negócio corporativo o Silverlight deve virar preferência em breve.
Fonte: http://news.cnet.com/8301-13860_3-10346668-56.html
69bb9834-2203-4fbf-8e66-6beda534bd76|0|.0