zoukankan      html  css  js  c++  java
  • 使silverlight适应IE窗口大小的方法

        Pete Brown在它的BLOG中提到了一个按自定义比例使用silverlight适应IE窗口大小的方法

        原文如下:How to Resize a Silverlight 2 App and Keep the Same Aspect Ratio                

        其核心代码如下(
    Xaml):

    <UserControl x:Class="PeteBrown.SilverlightScalingExample.Page"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
        
    >
       
        
    <Grid x:Name="LayoutRoot"
              Background
    ="Cornsilk" ShowGridLines="True"
              Width
    ="400" Height="300"
              RenderTransformOrigin
    ="0.5 0.5">
           
            
    <Grid.RenderTransform>
                
    <ScaleTransform x:Name="PageScale" ScaleX="1" ScaleY="1"/>
            
    </Grid.RenderTransform>
           

        
    </Grid>
    </UserControl>



    public partial class Page : UserControl
    {
        
    // this is the aspect ratio we want to maintain
        
    // you can specify this all sorts of ways, but the
        
    // easiest is to take the original size and divide
        
    // X by Y (4:3 or 1.333 in this case)
        private const double _originalWidth = 400;
        
    private const double _originalHeight = 300;
        
    private const double _originalAspectRatio =
            _originalWidth 
    / _originalHeight;

        
    public Page()
        {
            InitializeComponent();

            
    // wire up the event handler. This is a great addition
            
    // to silverlight, as you used to have to hook into the
            
    // browser event yourself
            SizeChanged += new SizeChangedEventHandler(Page_SizeChanged);
        }

        
    void Page_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            
    if (e.NewSize.Width < _originalWidth ||
                e.NewSize.Height 
    < _originalHeight)
            {
                
    // don't shrink
                PageScale.ScaleX = 1.0;
                PageScale.ScaleY 
    = 1.0;
            }
            
    else
            {
                
    // resize keeping aspect ratio the same
                if (e.NewSize.Width / e.NewSize.Height > _originalAspectRatio)
                {
                    
    // height is our constraining property
                    PageScale.ScaleY = e.NewSize.Height / _originalHeight;
                    PageScale.ScaleX 
    = PageScale.ScaleY;
                }
                
    else
                {
                    
    // either width is our constraining property, or the user
                    
    // managed to nail our aspect ratio perfectly.
                    PageScale.ScaleX = e.NewSize.Width / _originalWidth;
                    PageScale.ScaleY 
    = PageScale.ScaleX;
                }
            }
        }
    }


        这是一个很有用的小技巧,所以在这里做一个记号,看看将来是否能用得上:)
  • 相关阅读:
    Thinkcmf:页面常用函数
    thinkcmf开发--关于控制器
    thinkcmf 常用操作
    Thinkcmf 二次开发
    Sublime Text 3 快捷键精华版
    php动态更改post_max_size, upload_max_filesize等值
    Jquery使用小技巧
    jQuery常用方法和函数
    三层架构
    JDBC
  • 原文地址:https://www.cnblogs.com/daizhj/p/1242321.html
Copyright © 2011-2022 走看看