您的位置:首页 > 其它

在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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: