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

来源:http://www.cnblogs.com/sonic1abc/archive/2008/07/30/1256218.html

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

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

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

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

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

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

<UserControl x:Class="Images_Dimensions_Silverlight.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<ContentControl x:Name="MyContent">
<Canvas x:Name="GameCanvas" ></Canvas>
</ContentControl>
</Grid>
</UserControl>

接下来我们要怎么做呢?

1.创建一个image对象

2.绑定数据源

3.添加到canvas里面去

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

private void LoadImage(string path)
{
Uri uri = new Uri(path, UriKind.Relative);
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.UriSource = uri;
grass = new Image();
grass.Source = bitmapImage;
GameCanvas.Children.Add(grass);
}

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

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

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

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

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

延伸阅读

最新评论

发表评论