图像大小始终返回0

时间:2012-10-21 15:27:10

标签: c# image windows-phone-7 silverlight-4.0 image-size

我正在尝试将嵌入式资源中的图像加载到Image实例。问题是图像的大小始终为0.

以下是代码段:

Image image = new Image();
ImageSource img = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Images/marker.png", UriKind.Relative));
image.SetValue(Image.SourceProperty, img);


System.Diagnostics.Debug.WriteLine("output 1 = " + image.DesiredSize.Width); // return 0
System.Diagnostics.Debug.WriteLine("output 2 = " + image.ActualWidth); // return 0

我必须知道图像在屏幕上呈现之前的大小,因为我需要根据图像的大小来偏移图像。

谢谢



更新: 谢谢Silvermind

我用示例代码

回答了我自己的问题

3 个答案:

答案 0 :(得分:2)

查看BitmapImage.DownloadProgress Event;

  

通过URI构造BitmapImage本质上是异步的。这个   关于施工进度的事件报告。

换句话说,在必须下载/构建ActualWidth之前运行BitmapImage可能会将{0}作为ActualWidth返回。

答案 1 :(得分:1)

“/ Images / marker.png” - 您确定这是文件吗?

也许是因为文件夹被命名为没有大写的图像?

还会返回:

image.getValue(); // here what null? after setting it

答案 2 :(得分:0)

感谢Silvermind。他建议使用CreateOptions。

最后,我找到了一个解决方案:

Image image = new Image();

Uri uri = new Uri("/Images/marker_stop.png", UriKind.Relative);
BitmapImage bi = new BitmapImage(uri);
bi.CreateOptions = BitmapCreateOptions.IgnoreImageCache;

image.Source = bi;
System.Diagnostics.Debug.WriteLine("************************************* in image.ActualWidth " + ", " + bi.PixelWidth); // return 30