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

第1种方式以图片为例,即应用图片的Stretch属性

       <Grid x:Name="LayoutRoot" Background="White">
        <Image  Stretch="UniformToFill" Source="/FullScreenModel;component/Koala.jpg" />
        <Button Content="全屏"  Name="button1"  Click="button1_Click" />
        </Grid>
 Click事件代码:
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
        }

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

第2种方式则在后台进行处理,当处于全屏模式时,该页面上的控件也进行变化,以Button为例:

这种方式或许更贴近我们平常接触的全屏,我们看看这部分的实现

        <Grid.RenderTransform>
            <ScaleTransform ScaleX="1" ScaleY="1" x:Name="RootLayoutScaleTransform">
            </ScaleTransform>
        </Grid.RenderTransform>
       <Button  Name="button1" Content="全屏" Height="30" Width="50" Click="button1_Click" Margin="70,170,72,100">
        </Button>

这里在UI中添加了一个名为RootLayoutScaleTransform的放大转换

后台代码主要是根据插件的Resized,FullScreenChanged事件进行处理的,所以我们在构造函数中声明

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

完整的代码:

        private double width;
        private double height;
        public double uniformScaleAmount = 1;
        public MainPage()
        {
            InitializeComponent();
             height = this.Height;
             width = this.Width;
            Application.Current.Host.Content.Resized += new EventHandler(Content_Resized);
            Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_Resized);
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
        }
        void Content_Resized(object sender, EventArgs e)
        {
            double currentWidth = Application.Current.Host.Content.ActualWidth;
            double currentHeight = Application.Current.Host.Content.ActualHeight;
            uniformScaleAmount = Math.Min((currentWidth / width), (currentHeight /height));
            RootLayoutScaleTransform.ScaleX = uniformScaleAmount;
            RootLayoutScaleTransform.ScaleY = uniformScaleAmount;
        } 

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

就看到这两种方式,有更好的方法请告诉我。

代码下载:FullScreenModelDemo   VS2010+SL3

转载于:https://www.cnblogs.com/626498301/archive/2010/08/26/1808883.html

Silverlight中全屏处理相关推荐

  1. java安卓图片全屏_在Android中全屏显示GIF图片(演示代码)

    [实例简介] 在Android中全屏显示GIF图片(演示代码),详细内容请参考:http://blog.csdn.net/u012939909/article/details/77418173 [实例 ...

  2. silverlight 实现全屏

    我们利用最为基本的控件,实现类似于视频网址的全屏功能,这里我们用的控件是,canvas控件stackpanel控件,textblock控件,以及button控件,其中textblock控件类似于asp ...

  3. 【BUG】小米5中 video.js 在钉钉 webview 中全屏后 后退无法弹出虚拟键盘

    BUG背景 触发环境 MI 5 或 MI 6(三星没问题) 钉钉3.5.3(开发版没问题)Webview [WebKit 537.36 Chrome 57.0.2987.132](识别方法见文末) v ...

  4. Android中全屏或者取消标题栏

    先介绍去掉标题栏的方法: 第一种:也一般入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 注意这句一定要写在se ...

  5. 如何获取UIWebView中全屏播放视频事件

    这样一种情况,用UIWebView加载一个页面,竖屏,页面中有视频,现在我们希望在全屏播放这个视频的时候可以横屏.解决方法如下: 1.设置一个变量监控是否全屏播放视频 2.根据这个变量设置是否可以横屏 ...

  6. iphonex中全屏h5的适配

    iphonex 已经上线有一段时间了,作为业界刘海屏幕第一款机型,导致全屏不能正常的全屏显示了,,所以需要对 iphonx 适配,下面就详细说说如何适配 先看一张适配前后的图: iphonex 提供的 ...

  7. 如何禁止视频在手机移动端页面中全屏播放

    最近公司的项目中出了需要在局部播放视频的需求,我们都知道HTML5中有一个专门的标签video用来嵌入视频.不过,这个video标签有很多的属性可能很多同学并不是很熟悉,下面我们来认识一下: 在网页里 ...

  8. 谷歌浏览器中全屏及跳过页面打印预览的设置

    1.首先在桌面创建一个谷歌浏览器的快捷方式: 2.打开浏览器>>然后打开"设置"菜单>>在"启动时"一项中选择"打开特定网页或 ...

  9. Android studio中全屏显示

    android中设置全屏显示的方法## 标题 在MainActivity中添加如下代码 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FUL ...

最新文章

  1. spring注解--@Bean
  2. 设置Button控件创建完毕时触发的事件.
  3. 超棒的跨浏览器纯CSS动画实现 - Animate.css
  4. 阶段-关口系统-stage2立项分析阶段---学习记录
  5. python两个列表合并 从小到大排列_Python对两个有序列表进行合并和排序的例子...
  6. java趣味_Java趣味分享:try finally
  7. 【Python3网络爬虫开发实战】3.1.1-发送请求
  8. egg前面加什么,egg前加a还是an?
  9. d3 v5 api arrays
  10. 20180330试试水
  11. SQL Server如何清除连接过的服务器名称历史?
  12. 中国人工智能学会通讯——一种基于众包的交互式数据修复方法 3 给定质量约束下的交互式算法...
  13. PAT Java实现厘米换算英尺英寸
  14. 系统垃圾清理bat文件
  15. 基于Jsp+Servlet的宿舍管理系统(JavaWeb毕业设计源码)
  16. 计算机导航种植牙的优势,计算机导航微创种植牙修复
  17. 企业如何借助百度百家号进行网络推广?
  18. Arcmap地理配准png
  19. 泛微OA集成Wps-V5版本,获取授权相关数据
  20. Mac如何隐藏程序坞

热门文章

  1. LeetCode 2120. 执行所有后缀指令(模拟)
  2. [Kaggle] Spam/Ham Email Classification 垃圾邮件分类(BERT)
  3. 天池 在线编程 最小振幅(排序)
  4. LeetCode 930. 和相同的二元子数组(哈希+前缀和)
  5. 用python开启相机_如何用Python打开realsenseD435相机并获取相机参数
  6. dategurd oracle_Oracle 时间和日期处理
  7. 爬虫小案例:基于Bing关键词批量下载图片(第二版)
  8. ab的plc跟西门子哪个好些_2020滚筒洗衣机哪个牌子好?想买滚筒洗衣机的看过来!...
  9. 使用设备mac好还是随机mac好_省4000我给MBP16搭配了一块2T SSD:希捷 酷鱼飞翼 Fast SSD使用测评...
  10. 卖萌屋算法工程师思维导图part3—深度学习篇