使silverlight适应IE窗口大小的方法
生活随笔
收集整理的這篇文章主要介紹了
使silverlight适应IE窗口大小的方法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
??? Pete Brown在它的BLOG中提到了一個(gè)按自定義比例使用silverlight適應(yīng)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;
????????????}
????????}
????}
}
??? 這是一個(gè)很有用的小技巧,所以在這里做一個(gè)記號(hào),看看將來(lái)是否能用得上:)
??? 原文如下: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;
????????????}
????????}
????}
}
??? 這是一個(gè)很有用的小技巧,所以在這里做一個(gè)記號(hào),看看將來(lái)是否能用得上:)
總結(jié)
以上是生活随笔為你收集整理的使silverlight适应IE窗口大小的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: algorand共识协议_【Fileco
- 下一篇: mysql 列数据显示转成行数据显示_M