微软于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          } 
6  
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教程之与摄像头与迈克风设备交互相关推荐

  1. Silverlight4.0教程之使用CompositeTransform复合变形特效实现倒影

    微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最 ...

  2. 风云的银光志Silverlight4.0教程之遍历访问客户端用户的本地文件

    微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最 ...

  3. 风云的银光志Silverlight4.0教程之富文本控件RichTextArea(RichTextBox)

    微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最 ...

  4. Silverlight4.0(1) 之 第一个Silverlight程序

    之前有点儿纠结,一直在vs08下学Silverlight2.0,前两天Down了一个vs2010然后把Silverlight也更新到了 4.0,突然不知道是该写2.0还是4.0了,后来狠了狠心,技术嘛 ...

  5. silverlight4.0 写文件不能设置默认文件名

    Silverlight4.0 不提供SaveFileDialog的SafeFileName的写属性 We've not exposed the "DefaultFileName" ...

  6. 零基础快速入门SpringBoot2.0教程 (二)

    一.SpringBoot2.x使用Dev-tool热部署简介:介绍什么是热部署,使用springboot结合dev-tool工具,快速加载启动应用官方地址:https://docs.spring.io ...

  7. Android Studio2.0 教程从入门到精通Windows版

    系列教程 Android Studio2.0 教程从入门到精通Windows版 - 安装篇 Android Studio2.0 教程从入门到精通Windows版 - 入门篇 Android Studi ...

  8. IoT:BLE4.0教程一 蓝牙协议连接过程与广播分析

    IoT:BLE4.0教程一 蓝牙协议连接过程与广播分析 1.蓝牙简介 什么是蓝牙4.0 蓝牙无线技术是使用范围最广泛的全球短距离无线标准之一,蓝牙4.0版本涵盖了三种蓝牙技术,即传统蓝牙.高速蓝牙和低 ...

  9. iOS OpenGL ES2.0教程   Lesson03 旋转

    iOS OpenGL ES2.0教程    Lesson03  旋转 注:可供翻译的课程只有前两课.从这节课起,我试着根据我对OpenGL ES的理解写接下去的课程,希望能和大家一起学习. 在上节课中 ...

最新文章

  1. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-08项目人力资源(Human Resource)管理...
  2. 我们究竟应不应该使用框架?
  3. linux lddbus设备,Linux那些事儿之我是Sysfs(4)举例一lddbus | 技术部落
  4. Django学习笔记(10)——Book单表的增删改查页面
  5. 黄聪:C# 开发Chrome内核浏览器(WebKit.net)
  6. .bash_profile和.bashrc的区别(如何设置生效)
  7. SAP Fiori Elements 应用 manifest.json 文件里 resources.json 的含义
  8. XSSFWorkbook与HSSFWorkbook的区别
  9. 基于R语言实现的交通时空大数据处理
  10. table 谷歌下不出现滚动条
  11. android dialog转layout
  12. 适合初学者 :用Google map street view api 实现批量下载谷歌地图街景 in python
  13. 医院标准化信息中心机房建设心得
  14. android tv盒子哪个好用,电视盒子什么牌子好?内行人都选这五款好用又不贵的机型...
  15. 如何使用PDF Expert将文本添加到PDF?
  16. 斗鱼扩展--移除广告优化页面(五)
  17. 使用tcpdump抓包
  18. 【Unity】Unity实现鼠标控制摄像机围绕物体旋转镜头 滑轮控制远近
  19. 一个比较简单的x2m解密方法
  20. K-verse 小型活动来袭!

热门文章

  1. 20190807:排序数组删除重复项
  2. android meminfo,Android中dumpsys meminfo与/proc/meminfo获取空闲内存不一致的问题
  3. linux下编写sql脚本,在Linux系统中编写简易shell脚本,向PLSQL表中插入数据
  4. sublime Text3安装可以使xml格式化的插件
  5. 判断某个字符出现的次数
  6. void及void指针含义的深刻解析
  7. vb UTF文本文件访问
  8. ROS 2正式版终于来了,还增加了这些新特性
  9. Bootstrap Wizard 多步表单控件
  10. 游戏人生Silverlight(6) - 贪吃蛇[Silverlight 3.0(c#)]