在Silverlight中如何获取图片的宽高

这几天又收集几个比较有用的Silverlight函数在这里共享给大家~

这次先给大家说说如何获取image的宽高~

首先我们在同步image控件的时候经常要使用一个bitmapimage对象(System.Windows.Media.Imaging;)

我们可以同步他的下载进度 当他完全下载成功后我们便可以开始获取 该图片的大小了.

还是先给大家share一下代码吧~

 

很显然我们要向canvas中添加一个image

  
  
  
  
  1. <UserControl x:Class="Images_Dimensions_Silverlight.Page" 
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.     Width="400" Height="300"
  5.     <Grid x:Name="LayoutRoot" Background="White"
  6.         <ContentControl x:Name="MyContent"
  7.             <Canvas x:Name="GameCanvas" ></Canvas> 
  8.         </ContentControl> 
  9.     </Grid> 
  10. </UserControl> 
接下来我们要怎么做呢?

1.创建一个image对象

2.绑定数据源

3.添加到canvas里面去

步骤下面我们来看看代码如何实现

  
  
  
  
  1. private void LoadImage(string path) 
  2.         { 
  3.             Uri uri = new Uri(path, UriKind.Relative); 
  4.             BitmapImage bitmapImage = new BitmapImage(); 
  5.             bitmapImage.UriSource = uri; 
  6.             grass = new Image(); 
  7.             grass.Source = bitmapImage; 
  8.             GameCanvas.Children.Add(grass); 
  9.         } 

这个过程大家可能已经是在熟悉不过了,我们只需要在对他稍加修改使用bitmapimage的DownloadProgress事件

bitmapImage.DownloadProgress  +=   new  EventHandler < DownloadProgressEventArgs > (bitmapImage_DownloadProgress);

 下面我们看看我们如何处理这个事件的

  
  
  
  
  1.  


void bitmapImage_DownloadProgress(object sender, DownloadProgressEventArgs e)
        {
            
if (e.Progress == 100)
            {
                Dispatcher.BeginInvoke(
delegate()
                    {
                        
double height = grass.ActualHeight; 
                        
double width = grass.ActualWidth;
                    });
            }
        }

呵呵~ 又是一个简单的demo 相信对大家有所帮助 下次我会给大家说说怎么获取 Silverlight的邮件点击事件~

你可能感兴趣的:(silverlight)