Von
Mario Meir-Huber
14. January 2010 14:26
Ebenso wie die vorigen Posts ist auch dieses Post aufbauend. Wir sind bereits bei Teil 5 angelangt. wo wir uns den WebCam support in Silverlight 4 ansehen. In unseren “Ribbon” aus Teil 1 fügen wir einen neuen Button ein. Dieser trägt den Namen “Live Bild”.
<Button Margin="5" Content="Live Bild" Click="Button_Click_1"></Button>
Nun editieren wir den Handler. Dieser funktioniert ähnlich dem im Teil 4 erklärten Vorgehen. Wir benötigen wieder einen Paragrafen, einen InlineUIContainer und ein Image. Die WebCam können wir mit der CaptureSource ansprechen.
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Paragraph para;
InlineUIContainer container;
Image img;
CaptureSource csource = new CaptureSource();
Um die WebCam zu verwenden überprüfen wir, ob ein Zugriff auf das Gerät überhaupt erst möglich ist. Danach greifen wir auf das Gerät mit “RequestDeviceAccess” zu. Die Methode “Start” startet die Aufnahme des Gerätes. Will man ein Bild machen, so funktioniert dies mit “AsyncCaptureImage”. Hier kann man mit Hilfe von Lamdba-Expressions das Bild aufnehmen. Wenn das Bild aufgenommen wurde, kann man die Aufnahme auch beenden.
if (CaptureDeviceConfiguration.AllowedDeviceAccess || CaptureDeviceConfiguration.RequestDeviceAccess())
{
csource.Start();
if (csource.State == CaptureState.Stopped)
csource.VideoCaptureDevice = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();
para = new Paragraph();
container = new InlineUIContainer();
img = new Image();
para.Inlines.Add(container);
TextArea.Blocks.Add(para);
//beta bug!!!
container.Child = img;
csource.AsyncCaptureImage(n =>
{
img.Source = n;
csource.Stop();
});
}
Das Bild hier zeigt mich wie ich eben das Sample erstellt habe. Live von der WebCam ;)

Bei dieser Gelegenheit möchte ich auch auf den WPF/Silverlight Community Day hinweisen, welcher am 29. Jänner in Graz statt finden wird. Hier werden die Silverlight 4 Neuerungen nochmal beleuchtet.
Mario Meir-Huber
Web: www.meirhuber.de
Twitter: www.twitter.com/mario_mh