对于PixelWidth和PixelHeight,BitmapImage返回0

时间:2013-03-14 10:09:53

标签: c# .net windows-runtime winrt-xaml bitmapimage

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

所以我创建了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

2 个答案:

答案 0 :(得分:4)

如果要在为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;

答案 1 :(得分:-2)

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

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;