微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在SL中使用全屏模式 (zz)

 

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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐