在Silverlight中使用全屏模式

看到留言中有人提出Silverlight对全屏模式的支持。那就在这里简单的聊一下。

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值