全屏模式下处理Silverlight控件的两种方式

Silverlight插件支持全屏模式,这个没什么好说的,只需要用设置IsFullScreen属性即可,问题在于全屏模式中,尽管屏幕变大了,但是页面中的控件并未相应的变大。

凤城网站建设公司创新互联,凤城网站设计制作,有大型网站制作公司丰富经验。已为凤城1000+提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的凤城做网站的公司定做!

推荐专题:走向银光 一步一步学Silverlight

第1种方式,即应用图片的Stretch属性:

 
 
 
 

Click事件代码:

 
 
 
 
  1. private void button1_Click(object sender, RoutedEventArgs e)
  2.      {
  3.          Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
  4.      }

这里主要是将Image的Stretch属性设置为UniformToFill,这样图片就可以根据浏览器分辨率的变化而变化,这种方式在处理图片,视频等资源时比较方便,不过使用这种方式在插入模式下使用图片时,你需要进行一些处理,因为若你在Image中指定Width或Height,图片在全屏模式下会保持这个固定的大小。

第2种方式则在后台进行处理

当处于全屏模式时,该页面上的控件也进行变化,以Button为例。这种方式或许更贴近我们平常接触的全屏,我们看看这部分的实现:

 
 
 
 
  1.             
  2.             
  3.         
  4.                 
  5.         

这里在UI中添加了一个名为RootLayoutScaleTransform的放大转换,后台代码主要是根据插件的Resized,FullScreenChanged事件进行处理的,所以我们在构造函数中声明。

 
 
 
 
  1. Application.Current.Host.Content.Resized += new EventHandler(Content_Resized);
  2. Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_Resized);

完整的代码:

 
 
 
 
  1. private double width;
  2.         private double height;
  3.         public double uniformScaleAmount = 1;
  4.         public MainPage()
  5.         {
  6.             InitializeComponent();
  7.              height = this.Height;
  8.              width = this.Width;
  9.             Application.Current.Host.Content.Resized += new EventHandler(Content_Resized);
  10.             Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_Resized);
  11.         }
  12.         private void button1_Click(object sender, RoutedEventArgs e)
  13.         {
  14.             Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
  15.         }
  16.         void Content_Resized(object sender, EventArgs e)
  17.         {
  18.             double currentWidth = Application.Current.Host.Content.ActualWidth;
  19.             double currentHeight = Application.Current.Host.Content.ActualHeight;
  20.             uniformScaleAmount = Math.Min((currentWidth / width), (currentHeight /height));
  21.             RootLayoutScaleTransform.ScaleX = uniformScaleAmount;
  22.             RootLayoutScaleTransform.ScaleY = uniformScaleAmount;
  23.         } 

页面初始化后我们先将当前插件的大小保存了下来,当单击Button发生全屏事件时,会进行相关事件的处理,这种方式我觉得处理的更为妥善一些,程序运行的时候,如果你的界面上什么都没有,需要设置UserControl的Width,Height属性。

原文地址:http://www.cnblogs.com/626498301/archive/2010/08/26/1808883.html

网页题目:全屏模式下处理Silverlight控件的两种方式
网页地址:http://www.csdahua.cn/qtweb/news37/243737.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网