8

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

所以我创建了 myBitmapImage但当我尝试访问PixelWidthand时得到 0 PixelHeight

请问我该怎么做?

编辑:(添加示例代码)

我只是在做:

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
4

2 回答 2

5

当您想在为您的 设置源之后使用图像属性时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;
于 2013-03-14T14:12:24.800 回答
-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;
于 2013-03-14T10:24:22.663 回答