您现在的位置: IT专家网 > WinSystem子站 > 技巧
使用Silverlight 2.0构建高级3D动画
Silverlight 是 Microsoft 出品的一款新的跨浏览器插件,它引进了 Microsoft .NET Framework 的强大功能,用于履行之前保留给 Flash 或 Java 小程序的职责。
如果由于横生波折,您与过去几个月内发布所有 SilverlightTM 方面的信息均失之交臂,我来为您补上这一课:Silverlight 是 Microsoft 出品的一款新的跨浏览器插件,它引进了 Microsoft .NET Framework 的强大功能,用于履行之前保留给 Flash 或 Java 小程序的职责。Silverlight 有大量非常有用的现成功能。它支持小而精的 .NET Framework 3.5,此版本除了其他功能外,还包括 XML 和可扩展应用程序标记语言 (XAML)、泛型集合、Web 服务和 LINQ。Silverlight 还支持多种与 .NET 兼容的语言,但在这里我将仅使用 C#。
我认为掌握一项新技术的最好方法是从中寻找一些乐趣。因此,Silverlight 1.1 alpha 发布后,当我在都柏林的 IMT 会议上看到 Tim Sneath 令人激动的演示时,我就决定打造一个颇具培训色彩的应用程序,展示如何通过折叠一个平面来形成各种 3D 形状(即多面体)。默认情况下,Silverlight 并不支持 3D,因此需构建 DirectX 算法库的模拟来操作 3D。
多面体是具有平面的三维对象。此 Silverlight 示例将研究称为柏拉图多面体的正多面体和称为阿基米德多面体的半正多面体。这些多面体的表面均是正多边形(即所有边的长度都相同),如等边三角形或正方形。它们也可以是球体外表面,即没有尖角。正如您可能从这些古希腊名字中猜出来的,这些对象长久以来都具有迷人的人文内涵。
可在图 1 中查看最终应用程序的演示。应用程序的基本功能是:允许通过将鼠标移动到某个形状(多面体)来选中它。然后,窗口右上角会显示有关所做选择的一些信息,并且您还会看到将平板折叠成所选多面体的动画。最后,如果单击“Cycle”(循环)按钮,程序会自动依次循环显示每个形状。

图 1
使用 XAML
与许多 Silverlight 应用程序一样,多边形大量使用内容定义语言 XAML,它等价于 HTML,但更加灵活。同样地,尽管可仅使用 HTML 文档对象模型 (DOM) 来创建 HTML 页面,但它并非一个用于生成内容的明智方法,因为编码往往非常耗时,并且所生成页面的初始化速度也非常慢。最好尽可能在页面中使用 HTML 标记,然后在需要灵活性的地方使用 JavaScript 和 DOM 加以扩展。
使用 XAML 时也适合采用上述原则。组合内容的最快捷方法是尽可能多地使用 XAML 标记,并在必要时使用与 .NET 兼容的语言(如 C#)和 Silverlight Media API 来加以扩展。XAML 可以是手工编码、通过设计软件包(如 Expression BlendTM)生成、在开发期间由运行的程序产生,甚至在服务器上动态产生。理解这一点需要观念的改变。当 C# 程序员最后在非常适合使用 XAML 的实际环境中对功能进行编码时,则非常容易。
以下是我们在学习新语言时都会遇到的“Hello World”示例的 XAML 等价代码:
| <UserControl x:Class="Polyhedra.Page" xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300"> <Grid x:Name="LayoutRoot" Background="White"> <TextBlock>Hello World</TextBlock> </Grid> </UserControl> |
根元素是 UserControl。它包含 Grid,而 Grid 又包含具有“Hello World”文本的 TextBlock 元素。
- 本文关键词:
- DirectX
- Silverlight
- XAML
- XML

