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的变换只依靠当前显示的画面进行变换,所以出现了这种现象。

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

  • 相关阅读:
    SGU 176.Flow construction (有上下界的最大流)
    POJ 2391.Ombrophobic Bovines (最大流)
    poj 1087.A Plug for UNIX (最大流)
    poj 1273.PIG (最大流)
    POJ 2112.Optimal Milking (最大流)
    SGU 196.Matrix Multiplication
    SGU 195. New Year Bonus Grant
    关于multicycle path
    ppt做gif动图
    codeforces 598A Tricky Sum
  • 原文地址:https://www.cnblogs.com/Kane/p/1254762.html
Copyright © 2011-2022 走看看