在SL中使用全屏模式 (zz)
2008-08-26 14:03
246 查看
Silverlight对全屏模式的支持是内建的,实现方法很简单,在托管代码中,主要通过改变BrowserHost.IsFullScreen这个值来改变全屏模式。当IsFullScreen为True时,应用程序为全屏模式;该值为False时则返回普通浏览器内嵌模式。使用BrowserHost时需要引用System.Windows.Interop这个名字空间。
using System.Windows.Interop;
//其他名字空间
namespace SilverlightProject1
...{
public partial class Page : Canvas
...{
public void Page_Loaded(object o, EventArgs e)
...{
// Required to initialize variables
InitializeComponent();
//设置画布背景色为黄色
SolidColorBrush scb = new SolidColorBrush();
scb.Color = Colors.Yellow;
this.Background = scb;
//添加鼠标事件,通过左键单击画布切换全屏模式
this.MouseLeftButtonDown += new MouseEventHandler(onClick);
}
void onClick(object sender, MouseEventArgs e)
...{
//判断当前模式,实现全屏与嵌入模式之间的切换
BrowserHost.IsFullScreen = BrowserHost.IsFullScreen ? false : true;
}
}
这样就实现了最简单的全屏模式。但仅仅是这样或许还不足够,因为画布中的元素可能需要根据模式的转换而变换大小。这时候需要根据浏览器的大小来做一些变换。浏览器的大小可以通过BrowserHost.ActualHeight和BrowserHost.ActualWeith得到。比如让画布摊开到整个屏幕,则只需要在在onClick(...)方法中加入以下代码就可以了:
void onClick(object sender, MouseEventArgs e)
...{
BrowserHost.IsFullScreen = BrowserHost.IsFullScreen ? false : true;
//加入以下代码
this.Width = BrowserHost.ActualWidth;
this.Height = BrowserHost.ActualHeight;
}
利用BrowserHost的这两个属性,以及this.RenderTransform这个属性可以实现将画布中的元素根据浏览器的大小变换进行缩放:
void onClick(object sender, MouseEventArgs e)
...{
BrowserHost.IsFullScreen = BrowserHost.IsFullScreen ? false : true;
//加入如下代码
double x = BrowserHost.ActualWidth / this.Width;
double y = BrowserHost.ActualHeight / this.Height;
ScaleTransform st = new ScaleTransform();
st.ScaleX = x;
st.ScaleY = y;
this.RenderTransform = st;
}
关于在JavaScript中使用全屏模式和内嵌模式的切换,可以参考Silverlight SDK.
using System.Windows.Interop;
//其他名字空间
namespace SilverlightProject1
...{
public partial class Page : Canvas
...{
public void Page_Loaded(object o, EventArgs e)
...{
// Required to initialize variables
InitializeComponent();
//设置画布背景色为黄色
SolidColorBrush scb = new SolidColorBrush();
scb.Color = Colors.Yellow;
this.Background = scb;
//添加鼠标事件,通过左键单击画布切换全屏模式
this.MouseLeftButtonDown += new MouseEventHandler(onClick);
}
void onClick(object sender, MouseEventArgs e)
...{
//判断当前模式,实现全屏与嵌入模式之间的切换
BrowserHost.IsFullScreen = BrowserHost.IsFullScreen ? false : true;
}
}
这样就实现了最简单的全屏模式。但仅仅是这样或许还不足够,因为画布中的元素可能需要根据模式的转换而变换大小。这时候需要根据浏览器的大小来做一些变换。浏览器的大小可以通过BrowserHost.ActualHeight和BrowserHost.ActualWeith得到。比如让画布摊开到整个屏幕,则只需要在在onClick(...)方法中加入以下代码就可以了:
void onClick(object sender, MouseEventArgs e)
...{
BrowserHost.IsFullScreen = BrowserHost.IsFullScreen ? false : true;
//加入以下代码
this.Width = BrowserHost.ActualWidth;
this.Height = BrowserHost.ActualHeight;
}
利用BrowserHost的这两个属性,以及this.RenderTransform这个属性可以实现将画布中的元素根据浏览器的大小变换进行缩放:
void onClick(object sender, MouseEventArgs e)
...{
BrowserHost.IsFullScreen = BrowserHost.IsFullScreen ? false : true;
//加入如下代码
double x = BrowserHost.ActualWidth / this.Width;
double y = BrowserHost.ActualHeight / this.Height;
ScaleTransform st = new ScaleTransform();
st.ScaleX = x;
st.ScaleY = y;
this.RenderTransform = st;
}
关于在JavaScript中使用全屏模式和内嵌模式的切换,可以参考Silverlight SDK.
相关文章推荐
- FullCanvas与Canvas全屏模式真机使用分析
- 使用全屏沉浸模式实现播放器的横竖屏切换
- Flex不能全屏 并报错SecurityError: Error #2152: 不允许使用全屏模式。
- 管理系统UI之四:使用全屏沉浸模式(Using Immersive Full-Screen Mode)
- SL - 摘录 - 在MVVM模式下的VM层里使用线程的方法
- ZZ: 使用 "接口" 了解设计模式--策略模式(多态)集合框架 泛型、文件、文件流 IO(流)
- 在游戏全屏模式下,使用远程调试的设置方法
- UE4 打包设置全屏模式方法--GameUserSettings的使用
- 管理系统UI之四:使用全屏沉浸模式(Using Immersive Full-Screen Mode)
- 管理系统UI之四:使用全屏沉浸模式(Using Immersive Full-Screen Mode)
- 管理系统UI之四:使用全屏沉浸模式(Using Immersive Full-Screen Mode)
- 在Silverlight中使用全屏模式
- Flex3下使用全屏模式
- 管理系统UI之四:使用全屏沉浸模式(Using Immersive Full-Screen Mode)
- Directx 3D —— 如何使用全屏模式
- 管理系统UI之四:使用全屏沉浸模式(Using Immersive Full-Screen Mode)
- 使用沉浸式实现全屏模式
- Eclipse 使用的装逼神器之 Eclipse 全屏模式
- 在 Parallels Desktop 中,全屏模式使用 Win7,唤醒时黑屏
- 管理系统UI之四:使用全屏沉浸模式(Using Immersive Full-Screen Mode)