开始使用 Silverlight





4.00/5 (1投票)
本文简要介绍了Silverlight的历史,探讨了它的工作原理,并使用内嵌的XAML引用HTML文件中定义的内容。文章还讨论了如何使用VideoBrush和MediaElement来控制Silverlight中视频内容的显示。
这是我们对 The Code Project 赞助商的展示性评测。这些评测旨在为您提供我们认为对开发人员有用且有价值的产品和服务信息。
引言
Silverlight最受关注的方面之一是其毋庸置疑的技术成就。在一个下载量达到50MB的时代,微软设法将WPF和迷你CLR的大部分内容压缩到一个不到5MB的微型浏览器插件中。不仅如此,它还能在三大主流浏览器上运行:Firefox、Safari和IE。更令人惊叹的是,它还能在三大主流操作系统上运行,微软支持Windows和Mac OS X,而Novell的Mono项目则提供了Linux运行时。
本文简要介绍了Silverlight的历史以及它的用途。您将看到入门是多么容易,然后您将通过一个InnerWorkings编码挑战来实际练习,该挑战包含一个演示如何在Silverlight中使用和转换视频的示例应用程序。
Silver-什么?
Windows Presentation Foundation Everywhere (WPF/E) 在两年前的2005年PDC(Professional Developer Conference)上宣布,但很长一段时间以来一直保持低调。然而,在07年5月的Mix大会上,以Silverlight的名义发布了第一个1.0 beta版本,同时(有点令人困惑地)还发布了1.1版本的预览版。
1.0版本现已正式发布,可以显示矢量图形、动画和高质量视频(最高可达720p,即低端高清)。您可以使用WPF的XAML语法子集进行编程,并使用JavaScript提供交互性。
然而,1.1版本——仍处于技术预览阶段——是让大家兴奋不已的。它不仅仅是一个小幅修订,而是在插件中增加了一个小型CLR,能够执行编译后的C#、VB、Python和Ruby代码。尽管它是精简版的,但Core CLR仍然提供了一个即时编译器,并且与完整的桌面CLR使用相同的程序集。如果您能将自己限制在Silverlight的CLR所包含的较小类集内,那么两者之间将具有完全的兼容性,无需重新编译。
Silverlight如何工作?
从用户的角度来看,其体验被设计成尽可能流畅。首次访问启用Silverlight的网站时,会显示一条消息,邀请用户从微软网站下载插件。安装过程快速简便,尽管可能需要重新启动浏览器。之后,任何Silverlight内容都会自动显示,并且插件甚至会根据需要自行更新。
Silverlight SDK提供了一个JavaScript文件,该文件可以检测插件是否存在,并根据情况显示内容或提示用户安装。JavaScript还提供了一种在不担心支持的浏览器不同期望的情况下显示Silverlight内容的方式。
实际的“场景”定义在XAML中,这是一种基于XML的格式,其中元素和属性对应于.NET对象及其属性。这与驱动WPF的XAML相同,只是其中一些元素被省略了。
至少在Silverlight 1.0中,剩余的功能足以绘制形状、图像、文本和视频。WPF的一些灵活布局选项(如Grid、DockPanel和StackPanel)缺失了,任何内置的UI控件都没有:没有按钮、菜单、列表框或任何其他控件。虽然您可以使用HTML控件代替,但这仍然是一个主要的缺点。Silverlight团队已承诺在未来的1.1版本中提供其中一些控件,以及一组更易于布局的面板。
要构建一个不仅仅是看起来漂亮的应用,您可以为Silverlight对象附加事件处理程序,并编写代码来操作场景,启动动画,控制视频或音频播放,以及更新对象的属性。Silverlight确实表现得像一个迷你WPF,所以如果您熟悉它的“大哥哥”(或者Windows Forms或ASP.NET),那么编程模型都很容易遵循。
你好,Silverlight
当您剥离辅助JavaScript文件后,在安装了插件的浏览器中显示Silverlight内容所需的代码非常少。下面的代码片段使用内嵌XAML来引用HTML文件中定义的内容,但您也可以轻松地使用位于Web服务器上的文件(或由ASP.NET动态生成的文件)。除了XAML的script标签外,代码片段还包含一个object标签,该标签实际上创建了Silverlight控件的一个实例,并向其传递了一个它应该使用的XAML的引用(在本例中,前面加上#符号,以指定带有内容的HTML元素的ID)。就是这样。
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<script type="text/xaml" id="xamlContent">
<Canvas xmlns="http://schemas.microsoft.com/client/2007">
<TextBlock Text="Hello, Silverlight!" />
</Canvas>
</script>
<object id="silverlightObj" type="application/x-silverlight"
width="200" height="200">
<param name="source" value="#xamlContent" />
</object>
</body>
</html>
使用Silverlight显示视频
WPF(因此Silverlight)的优势之一是其可组合性:对象可以轻松地嵌套在一起以创建复合对象。例如,一个按钮不必只包含一个文本标签;它也可以包含一个图像(或一个视频、一个微型交互式游戏,或者任何您想要的东西)。虽然其中许多用途并不实用,但可组合性带来的简洁性有助于处理各种更常见的场景。如果您想在圆形或圆角矩形内显示图像或视频,您不必设置图像的某个晦涩的属性;只需将其放入一个形状合适的容器中即可。
同样,Silverlight的动画和转换功能可以像处理基本形状一样轻松地应用于视频。这使得在可拖动的对象上渲染视频,或者缩放或裁剪视频变得容易。关键在于VideoBrush,它可以用来用MediaElement的输出填充形状的内部。然后可以隐藏MediaElement本身,只留下被VideoBrush绘制的形状可见。
试一试
Silverlight是一项仅凭言语无法完全描述的技术。请查看Silverlight.net上的教程以了解更多信息,或者直接跳到展示区看看能做什么。
接下来,从InnerWorkings下载免费Silverlight挑战,开始一些真正的Silverlight项目。您将更深入地了解如何在自己的应用程序中设置Silverlight,以及练习使用VideoBrush根据自己的规格渲染和控制裁剪和放大的视频。
什么是InnerWorkings编码挑战?
InnerWorkings编码挑战是Visual Studio中的一个代码示例,其中缺少一些关键部分。每个挑战都包含精选的参考链接,这些链接专门用于帮助您找到填写空白、完成示例应用程序并同时学习新技术的方法。完成后,InnerWorkings Developer会自动检查您的代码,因此您可以确信您已正确解决了挑战,并且真正理解了您学到的东西。
我们的编码挑战旨在引导您深入了解您想了解的技术核心,重点关注最重要、最实用的功能。因为一切都已为您设置好,您可以直接开始编码。
InnerWorkings拥有涵盖ASP.NET到Windows Communication Foundation等各种主题的数百个挑战的库。有关更多信息,请查看我们的目录。