对于PixelWidth和PixelHeight,BitmapImage返回0

我正在尝试做一个超级简单的事情:获取图像的大小。

所以我创建了我的BitmapImage但是当我尝试访问PixelWidthPixelHeight时我得到0。

我怎么能做到这一点呢?

编辑:(添加示例代码)

我只是这样做:

 var baseUri = new Uri("ms-appx:///"); var bitmapImage = new BitmapImage(new Uri(baseUri, "Assets/Logo.png")); MyImage.Source = bitmapImage; Debug.WriteLine("Width: " + bitmapImage.PixelWidth + " Height: " + bitmapImage.PixelHeight); 

在控制台中,我得到:

 Width: 0 Height: 0 

如果要在设置BitmapImage的源之后使用图像属性,通常必须编写将在ImageOpened执行的事件处理程序。

还要记住ImageOpened仅在下载和解码图像时触发(即使用Image.Source )。

 var bitmapImage = new BitmapImage(uri); bitmapImage.ImageOpened += (sender, e) => { Debug.WriteLine("Width: {0}, Height: {1}", bitmapImage.PixelWidth, bitmapImage.PixelHeight); }; image.Source = bitmapImage; 

您可以尝试以不同的方式初始化它。 试试这个:

 BitmapImage myBitmapImage = new BitmapImage(); // BitmapImage.UriSource must be in a BeginInit/EndInit block myBitmapImage.BeginInit(); myBitmapImage.UriSource = new Uri(@"C:\pics\Water_Lilies.jpg"); myBitmapImage.EndInit(); int w = myBitmapImage.PixelWidth;