0

我正在尝试将图像从嵌入式资源加载到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

我用示例代码回答了我自己的问题

4

3 回答 3

2

查看BitmapImage.DownloadProgress 事件

通过 URI 构造 BitmapImage 本质上是异步的。本次活动报告建设进度。

换句话说,在必须下载/构建ActualWidth之前运行很可能会返回 0 作为.BitmapImageActualWidth

于 2012-10-21T15:48:49.413 回答
1

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

也许是因为该文件夹被命名为 images 没有大写 I?

还有什么返回:

image.getValue(); // here what null? after setting it
于 2012-10-21T15:29:34.033 回答
0

谢谢银心。他建议使用 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
于 2012-10-22T10:00:57.107 回答