Scott Guthrie 博客中文版

Scott Guthrie's Blog on ASP.NET and .NET (英文原版地址:http://weblogs.asp.net/scottgu)

   博客堂 :: 首页 :: 联系 :: RSS 2.0 ::
随笔 - 249, 评论 - 1146, 引用 - 436

导航

标签

每月存档

最新留言

广告

 

【原文地址】 Tip/Trick: Supporting Full Screen Mode with Silverlight
【原文发表日期】 Thursday, May 17, 2007 6:56 AM

Silverlight支持的一个很好的特性是全屏功能,它能有效地接管计算机的整个屏幕,把其他的一切都藏起来,包括浏览器的边框。这在创造沉浸性UI体验,游戏,丰富的视频播放器等时会非常有用。

想看一个该特性的很好的实战例子的话,一定要去看一下www.silverlight.net网站上的Fox电影例程

在页面装载结束,电影开始播放后,在视频表面的中间双击,转换到全屏模式(注:上面的屏幕截图不是在全屏模式下,而是在浏览器模式下截下来的)。然后你可以点击ESC键来转回正常的浏览器模式。

如何使用.NET在Silverlight 1.1中实现全屏模式

我看到几个人问的一个问题是,“如何在使用.NET建造Silverlight应用时实现全屏模式? ” 好消息,答案是,实际上非常容易:

1) 首先往你的应用中加一个输入驱动的事件处理器,譬如,鼠标按下或键盘事件处理器。为安全之故,Silverlight不允许开发人员在应用刚装载时把应用转换成全屏模式(你不想让一个应用诓骗你)。所以你需要在回复用户动作时触发全屏模式。

2) 在你的输入事件处理器里,将BrowserHost.IsFullScreen属性设置为true (注: BrowserHost类居于System.Windows.Interop 空间命名之下)。这会引起Silverlight转换成全屏模式。将这个属性设置为false则转回到正常的浏览器模式。

简单的全屏模式样例

你可以在这里下载一个我用C#编写的简单的Silverlight全屏模式例程。

在你运行这个例程时,它会在浏览器里装载一个极其简单的Silverlight应用,显示一个文字消息,提示你点击它以转换成全屏模式:

如果你点击“Click for Full Screen(点击转换成全屏)”文字的话,该应用就会转换成全屏模式,即,把系统里运行的所有其它东西都隐藏起来,接管整个屏幕:

当你转换成全屏模式后,Silverlight会显示一个用户消息框,在屏幕上显示几秒钟,指示用户,他们可以按ESC键来转回浏览器模式。几秒钟后,这个消息框会消失,可见的只有你的内容。在我上面的例程里,我也允许用户点击“Click to Return to Browser(点击返回浏览器)”文字来转回浏览器模式。

简单的全屏模式代码解释

实现上面的例程的代码非常简单。

首先,我们可以打开和编辑应用的.XAML文件,然后往其中添加一个UI元素,我们将用它来触发全屏模式。在上面的例程里,我使用了一个<TextBlock>控件,我将它命名为"MyMessage"。下面是整个应用的XAML的所有内容:

下面的屏幕截图显示了上面.XAML文件的后台代码,包含了整个应用的所有代码:

在应用的Page_Loaded()事件处理器里,我接连了2个事件处理函数。

MyMessage_MouseLeftButtonDown,这个事件处理函数将会在用户点击我加进XAML文件中的TextBlock消息控件时执行。在这个事件处理函数里,我只是简单地根据当前是否已经在全屏模式,来把BrowserHost.IsFullScreen属性切换成true或false。

BrowserHost_FullScreenChange,这个事件处理函数会在Silverlight转换成全屏模式和浏览器模式时执行。它在模式转换发生时,提供了一个很好的地方来添加逻辑以更新UI。在上面的例程里,我改变了TextBlock控件上的文字。我也可以设置控件的大小或者将它们移动到屏幕的新位置上去。目前,Silverlight 1.1 Alpha还没有布局管理器支持,所以控件不会自动定位,除非你编写代码自己管理(不用担心,象桌面WPF版本一样的布局管理控件不久就会推出)。

除了IsFullScreen属性外,BrowserHost类还有许多非常有用的属性和事件:

ActualHeight和ActualWidth属性在你转换成全屏模式查询屏幕尺寸时尤其有用。你可以在页面上定位和扩缩你的UI控件时利用这些属性。

结语

在Silverlight应用中支持全屏模式非常容易,它能提供了了非常棒的,沉浸性用户体验。

想进一步了解Silverlight的话,请阅读我的Silverlight综合公告贴子以及访问www.silverlight.net社区网站。

想观看我使用.NET和Visual Studio Orcas从头打造Silverlight应用的示范的话,请观看这里的这个录像。

希望本文对你有所帮助,

Scott

打印 | 张贴于 2007-05-21 13:30:00 | Tag:.NET  Silverlight  Tips and Tricks  WPF  WPF/E

留言反馈

#回复: 技巧和诀窍:用Silverlight支持全屏模式 编辑
很不错的文章
2007-11-02 11:32:00 | [匿名:1001p.com]
#Silverlight支持全屏模式 编辑
技巧和诀窍:用Silverlight支持全屏模式 【原文地址】Tip/Trick:SupportingFullScreenModewithSilverlight 【原文发表日期】...
2007-10-12 15:08:00 | [匿名:lincats]
#回复: 技巧和诀窍:用Silverlight支持全屏模式 编辑
好长时间看不到新的文章了
2007-07-13 20:40:00 | [匿名:icod]
#收集一些有关SilverLight(WPF/E)的链接 编辑
1.介绍类: 1.1 Microsoft欲以SilverLight挑战flash/flex 1.2 能提供丰富体验的Microsoft SilverLight 1.3 Silverlight 1.4 Silverlight的业务场景
2007-06-07 11:27:00 | [匿名:cnblogs.com]
#回复: 技巧和诀窍:用Silverlight支持全屏模式 编辑
太有意思了,强!!
2007-05-30 21:27:00 | [匿名:picasa]
#回复: 技巧和诀窍:用Silverlight支持全屏模式 编辑
属性在哪里切换?
2007-05-30 16:45:00 | [匿名:db661音乐站]
#回复: 技巧和诀窍:用Silverlight支持全屏模式 编辑
属性在哪里切换? 属性在哪里切换?
2007-05-30 16:45:00 | [匿名:db661音乐站]
#回复: 技巧和诀窍:用Silverlight支持全屏模式 编辑
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2007-05-28 15:00:00 | [匿名:ada]
#回复: 技巧和诀窍:用Silverlight支持全屏模式 编辑
ActualHeight和ActualWidth属性在哪里切换?
2007-05-22 23:46:00 | [匿名:热门单曲]
#回复: 技巧和诀窍:用Silverlight支持全屏模式 编辑
楼上的好急切哦 发这么多
2007-05-21 21:15:00 | [匿名:helixapp]
#回复: 技巧和诀窍:用Silverlight支持全屏模式 编辑
你好,我是做软件的,想交换一下链接
2007-05-21 16:58:00 | [匿名:交点创科]
博客主人设置本博客不允许匿名用户发表言论,请登录后再试