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

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

  • 相关阅读:
    java之 Timer 类的使用以及深入理解
    关于百度Editor富文本编辑器 自定义上传位置
    BufferedInputStream/BufferedOutputStream
    ByteArrayInputStream/ByteArrayOutputStream 学习
    Android之ViewPager 第二课
    Android之ViewPager 第一课
    内存四区模型
    变量的本质
    数据类型的本质
    File、Blob、ArrayBuffer等文件类的对象有什么区别和联系
  • 原文地址:https://www.cnblogs.com/Kane/p/1254762.html
Copyright © 2011-2022 走看看