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

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

  • 相关阅读:
    事件委托,元素节点操作,todolist计划列表实例
    事件冒泡
    jquery事件三 -- load(), ready(), resize()以及bind()事件
    jquery事件二 -- 选项卡,失去焦点
    jqury动画,循环
    jquery事件一 ---鼠标移入移出
    例子2--定时器之无缝滚动
    例子3--元素绝对位置以及置顶菜单
    例子1--手风琴
    jquery之链式调用,层级菜单
  • 原文地址:https://www.cnblogs.com/Kane/p/1254762.html
Copyright © 2011-2022 走看看