zoukankan      html  css  js  c++  java
  • Silverlight的大小自适应中存在的一个问题

    由于希望Silverlight程序在浏览器中可以随着浏览器的大小而自适应,以便给客户带来更好的体验,在网上搜索了一下代码,大概原理是:

    设置SilverlightHost的大小为100%(这在Silverlight2 beta2中似乎已经自动设置了,程序的大小为640*480)


        public partial class Page : UserControl
        
    {
            
    public Page()
            
    {
                
    // Required to initialize variables
                InitializeComponent();
                Application.Current.Host.Content.Resized 
    += new EventHandler(BrowserHost_Resize);
            }

            
    private void BrowserHost_Resize(object sender, EventArgs e)
            
    {
                Content contentObject 
    = Application.Current.Host.Content;
                
    double xscale = contentObject.ActualWidth / this.Width;
                
    double yscale = contentObject.ActualHeight / this.Height;
                ScaleTransform scale 
    = new ScaleTransform();
                scale.ScaleX 
    = xscale;
                scale.ScaleY 
    = yscale;
                RenderTransform = scale;

            }

    通过以前代码可以实现Silverlight程序随着浏览器的大小而变化了,可是在实际应用发现,实际上这样只能实现Silverlight程序随着浏览器变大,而不是能缩小。也就是说当浏览器的容器的大小大于Silverlight原始大小时,Silverlight程序随之变大,但当浏览器容器的大小小于Silverlight程序的原始大小时,会出现Silverlight程序显示不全的情况,如下图所示:


    图1


     

    图2

    在图1中可看出,当Host的尺寸大于程序大小时,显示正常,而在图2中则消失了一部分。

    经过分析,我认为是因为Rezised事件是后于浏览器大小变化而激发的,但此时浏览器已经遮挡了一部分程序画面,而Transform的变换只依靠当前显示的画面进行变换,所以出现了这种现象。

    结论:我也不知道这种情况该如何处理,不晓得有没有达人知道,还请告知,谢拉。

  • 相关阅读:
    python常见排序算法解析
    分析python日志重复输出问题
    Mysql数据库基础
    横屏竖屏
    禁止iOS的弹性滚动 微信的下拉回弹
    移动性能
    取消双击上滑(针对iso)
    关于微信端 顶部会撑开页面的解决方案
    CSS动画简介
    browser-sync 使用简介
  • 原文地址:https://www.cnblogs.com/Kane/p/1254762.html
Copyright © 2011-2022 走看看