风云的银光志Silverlight4.0教程之与摄像头与迈克风设备交互

风云的银光志Silverlight4.0教程之与摄像头与迈克风设备交互,第1张

概述微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最突出的主要体现在几个方面: 开发工具增强:Visual Studio 2010具有可视化的设计工具,创建项目时可以选择运行时版本是3.0还是4.0,BLEND4加入XAML和C#代码全方位智能感知功能 微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最突出的主要体现在几个方面: 开发工具增强:Visual Studio 2010具有可视化的设计工具,创建项目时可以选择运行时版本是3.0还是4.0,BLEND4加入XAML和C#代码全方位智能感知功能、XAML的样式应用更为易用等。 摄像头与MIC硬件支持:可以用极少量的代码实现启用用户本机的WebCam和Mic,并可进行本地录制。 报表打印支持:报表打印问题在Silverlight4中得到的较好的解决。 更强大的基础类控件(RichTextBox、DataGrID增强版):富文本控件RichTextBox和具有可粘贴、排序功能的DataGrID被加入。 WCF增强:终于支持TCP通讯,比较http提升3-5倍,限于4502-4534端口。 兼容性增强:对Google的Chrome浏览器的支持。 MEF支持:MEF全称为Managed Extensibility Framework,译为“托管扩展框架”,支持创建大型复杂的应用程序。 运行速度提升:启动速度和渲染速度较前个版本提升约2倍左右。 DRM增强:支持PlayReady,可以对视频和音频的播放进行的保护,补充了对H.264的DRM保护。 其它增强:本地文件读写、鼠标右键事件支持、剪粘板支持。 当用户安装好Silverlight 4.0运行时后,打开浏览器在任何一个Silverlight应用程序点击鼠标右键可以看到Silverlight4插件的属性,其中加入了WebCam和MIC支持的TAB项,如图所示。  

Silverlight 4.0的CaptureDeviceConfiguration.GetAvailableVIDeoCaptureDevices可以得到用户本机所有可用的摄像头设备列表,下面我们实现在Silverlight中启用用户本机的摄像头,首先在界面中添加一个用来显示视频的“容器”GrID,然后添加一个按钮用来启用CAM设备,如图所示。

XAML: 1      <border x:name="LayoutRoot" CornerRadius="5" 
2          borderBrush="Gray" borderThickness="3">
3          <border.Background>
4              <VIDeoBrush x:name="myVIDeoBrush"/>
5          </border.Background>
6          <button x:name="btnCam" HorizontalAlignment="Right"
7              VerticalAlignment="Bottom"
8              WIDth="120" Height="30" 
9              Content="启动摄像头"/>
10     </border> C#: 1          public VIDeoAndAudio()
2          {
3              InitializeComponent();
4              this.btnCam.Click += new RoutedEventHandler(btnCam_Click);
5          }

7          voID btnCam_Click(object sender,RoutedEventArgs e)
8          {
9              //取得默认视频设备对象
10             VIDeoCaptureDevice cam = CaptureDeviceConfiguration.GetDefaultVIDeoCaptureDevice();
11             //创建视频捕获源对象
12             CaptureSource vIDeoSource = new CaptureSource();
13             //获取用户启用本机摄像头的许可
14             if (CaptureDeviceConfiguration.RequestDeviceAccess())
15             {
16                 //设置视频设备
17                 vIDeoSource.VIDeoCaptureDevice = cam;
18                 //设置视频来源
19                 myVIDeoBrush.SetSource(vIDeoSource);
20                 myVIDeoBrush.Stretch = Stretch.Fill;
21                 //启动摄像头
22                 vIDeoSource.Start();
23             }
24         } 点击启用摄像头按钮后,Silverlight会提示用户是否允许应用程序访问你的本机视频设备。  

用户选择是后,用户的视频内容就会立刻显示在border的VIDeoBrush区域内,是不是很容易呢。

  启用前                                                                     启用后 Silverlight 4.0不但支持视频设备的显示,同时结合控件的截图功能,可以很方便的得到用户的照片,接下来加入截图代码。 XAML: 1      <StackPanel x:name="LayoutRoot">
2          <border Height="350" x:name="myborder" CornerRadius="5" 
3          borderBrush="Gray" borderThickness="3">
4              <border.Background>
5                  <VIDeoBrush x:name="myVIDeoBrush"/>
6              </border.Background>
7          </border>
8          <StackPanel x:name="tsp" OrIEntation="Horizontal" 
9               Height="100"></StackPanel>
10         <StackPanel OrIEntation="Horizontal" Height="30" 
11                 HorizontalAlignment="Center">
12             <button x:name="btnCam" HorizontalAlignment="Right"
13             VerticalAlignment="Bottom"
14             WIDth="120" Height="30" 
15             Content="启动摄像头"/>
16             <button x:name="btnCrop" HorizontalAlignment="Right"
17             VerticalAlignment="Bottom"
18             WIDth="120" Height="30" 
19             Content="视频截图"/>
20         </StackPanel>
21     </StackPanel> C#: 1          voID CropVIDeo()
2          {
3              //创建可写入位图对象
4              WriteableBitmap wBitmap = new WriteableBitmap(myborder,new Matrixtransform());
5              //创建一个图像
6              Image img = new Image();
7              img.WIDth = 100;
8              img.margin = new Thickness(2);
9              //将wBitmap做为图像源
10             img.source = wBitmap;
11             //将图像添加到WrapPanel控件
12             tsp.Children.Add(img);
13         } 运行结果:  

  通过这种方式可以很方便的实现用户头像的上传,是不是很方便呢。 总结

以上是内存溢出为你收集整理的风云的银光志Silverlight4.0教程之与摄像头与迈克风设备交互全部内容,希望文章能够帮你解决风云的银光志Silverlight4.0教程之与摄像头与迈克风设备交互所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1037919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存