微软于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 }
运行结果:
通过这种方式可以很方便的实现用户头像的上传,是不是很方便呢。
总结以上是内存溢出为你收集整理的SilverLight与摄像头与迈克风设备交互全部内容,希望文章能够帮你解决SilverLight与摄像头与迈克风设备交互所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)