彩票走势图

全屏模式下处理Silverlight控件的两种方式

转帖|其它|编辑:郝浩|2010-09-03 16:13:06.000|阅读 705 次

概述:文章作者介绍在Silverlight中全屏处理的两种方式,第1种方式,即应用图片的Stretch属性;第2种方式则在后台进行处理。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

  Silverlight插件支持全屏模式,这个没什么好说的,只需要用设置IsFullScreen属性即可,问题在于全屏模式中,尽管屏幕变大了,但是页面中的控件并未相应的变大。

  第1种方式,即应用图片的Stretch属性:

  <Grid x:Name="LayoutRoot" Background="White&quot;> 

  &lt;Image Stretch="UniformToFill" Source="/FullScreenModel;component/Koala.jpg" /> 

  <Button Content="全屏"  Name="button1"  Click="button1_Click" /> 

  </Grid> 

  Click事件代码:

  private void button1_Click(object sender, RoutedEventArgs e)

   {  

   ;Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;

   } 

  这里主要是将Image的Stretch属性设置为UniformToFill,这样图片就可以根据浏览器分辨率的变化而变化,这种方式在处理图片,视频等资源时比较方便,不过使用这种方式在插入模式下使用图片时,你需要进行一些处理,因为若你在Image中指定Width或Height,图片在全屏模式下会保持这个固定的大小。

  第2种方式则在后台进行处理

  当处于全屏模式时,该页面上的控件也进行变化,以Button为例。这种方式或许更贴近我们平常接触的全屏,我们看看这部分的实现:

  <Grid.RenderTransform> 

  <ScaleTransform ScaleX="1" ScaleY="1" x:Name="RootLayoutScaleTransform"> 

       </ScaleTransform>&nbsp;

  </Grid.RenderTransform>

       <Button  Name="button1" Content="全屏" Height="30" Width="50" Click="button1_Click" Margin="70,170,72,100"> 

    </Button> 

  这里在UI中添加了一个名为RootLayoutScaleTransform的放大转换,后台代码主要是根据插件的Resized,FullScreenChanged事件进行处理的,所以我们在构造函数中声明。

  Application.Current.Host.Content.Resized += new EventHandler(Content_Resized); &nbsp;

  Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_Resized);

  完整的代码:

  private double width;  

  private double height;  

  public double uniformScaleAmount = 1;

  public MainPage()

      {  

  InitializeComponent();  

   height = this.Height;  

   &nbsp;  width = this.Width;  

  Application.Current.Host.Content.Resized += new EventHandler(Content_Resized);  

    &nbsp; &nbsp; Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_Resized);  

   }  

    private void button1_Click(object sender, RoutedEventArgs e)

   {  

  Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;

    }

  void Content_Resized(object sender, EventArgs e)  

   {  

  double currentWidth = Application.Current.Host.Content.ActualWidth;  

       &nbsp;  double currentHeight = Application.Current.Host.Content.ActualHeight;

  uniformScaleAmount = Math.Min((currentWidth / width), (currentHeight /height));

  &nbsp;      &nbsp;    RootLayoutScaleTransform.ScaleX = uniformScaleAmount;

  RootLayoutScaleTransform.ScaleY =&nbsp;uniformScaleAmount;

   } 

  页面初始化后我们先将当前插件的大小保存了下来,当单击Button发生全屏事件时,会进行相关事件的处理,这种方式我觉得处理的更为妥善一些,程序运行的时候,如果你的界面上什么都没有,需要设置UserControl的Width,Height属性。

  


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP