WEB开发网
开发学院图形图像Flash Silverlight 3 Beta 新特性解析(3) - Media篇 阅读

Silverlight 3 Beta 新特性解析(3) - Media篇

 2009-03-23 11:59:52 来源:WEB开发网   
核心提示: 当然在GPU加速提升视觉效果的同时,是需要付出一些代价的 - CPU,Silverlight 3 Beta 新特性解析(3) - Media篇(2),GPU和内存的占用率都会增长动态控件截图支持:如下代码所示:1:<StackPanelWidth="600">

当然在GPU加速提升视觉效果的同时,是需要付出一些代价的 - CPU,GPU和内存的占用率都会增长

Silverlight 3 Beta 新特性解析(3) - Media篇

动态控件截图支持:

如下代码所示:

  1: <StackPanel Width="600">

  2:   <MediaElement x:Name="ME" Source="gt_hd.wmv" MouseLeftButtonDown="ME_MouseLeftButtonDown"/>

  3:   <controls:WrapPanel x:Name="ThumbnailsPanel"></controls:WrapPanel>

  4: </StackPanel>

我们有个播放视频的MediaElement

下面的WrapPanel将被用来存放动态截图

截图过程将通过鼠标左键点击视频的动作来触发,这个动作的代码如下:

  1: private void ME_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)

  2: {

  3:   int width = 600;

  4:   int height = 600 * ME.NaturalVideoHeight / ME.NaturalVideoWidth;

  5:  

  6:   WriteableBitmap wBitmap = new WriteableBitmap(width, height, PixelFormats.Bgr32);

  7:   wBitmap.Render(this.ME, new MatrixTransform());

  8:  

  9:   Image img = new Image();

 10:   img.Width = 140;

 11:   img.Margin = new Thickness(5);

 12:   img.Source = wBitmap;

 13:  

 14:   this.ThumbnailsPanel.Children.Add(img);

 15: }

这里传给WriteableBitmap的width和height是有考究的

其设置的尺寸如果大于当前控件(我们这里是一段视频)的实际显示尺寸,其他区域将用白色填充

而第7行的new MatrixTransform()代表我们从左上角算截图的起点

当然你也可以位移一段距离(TranslateTransform)或者旋转一定得角度(RotateTransform)等等变换来设置你的截图的起点

Silverlight 3 Beta 新特性解析(3) - Media篇Silverlight 3 Beta 新特性解析(3) - Media篇

非常实用的一个特性

Media的新的特性还包括可以动态创建自己的视频和音频

其原理和WriteableBitmap差不多

但是其复杂性提高了很多

我将在后面专题做一个介绍

系列文章:

Silverlight 3 Beta 新特性解析(1) - 概论

Silverlight 3 Beta 新特性解析(2)-Graphics篇

Silverlight 3 Beta 新特性解析(4) - 离线功能篇

上一页  1 2 

Tags:Silverlight 特性

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接