2011-03-31 110 views
0

我想获得一个图像的高度像下面如何获得宽度和高度的图像

BitmapImage bitmap = new BitmapImage(new Uri("Images/header.png",UriKind.RelativeOrAbsolute)); 
Debug.WriteLine("bitmap.PixelHeight : " + bitmap.PixelHeight); 

它打印高度为0,但实际图像的高度为35个像素。它不是从服务器加载的图像。它存储在应用程序包本身内部。

+0

以后在项目中使用位图吗? – Polhovskiy 2011-03-31 06:21:06

回答

1

您稍后在项目中使用位图吗?如果您将它用作图像源,则可以尝试Image.ActualHeight和Image.ActualWidth

+0

我将它添加为图像的来源。我尝试了ActualHeght和ActualWidth,这些也只给0。但是我可以看到图像被添加到画布上。 – saikamesh 2011-03-31 06:54:08

+0

尝试在Image.ImageOpened事件发生后获取ActualHeight宽度 – Polhovskiy 2011-04-02 07:33:43

1

如果它没有从服务器加载,它仍然可以异步加载和处理。如果您在知道图像可见后使用相同的Debug.WriteLine调用,那么是否会给出正确的结果?

+0

你能告诉我如何检查图像是否可见 – saikamesh 2011-03-31 06:02:09

+0

或者你可以尝试订阅一个事件bitmapImage.ImageOpened – Polhovskiy 2011-03-31 06:24:56

+0

@saikamesh:为了测试的目的,我想你可以有一个按钮来做日志记录。 ..只是为了检查时机真的*是问题。 – 2011-03-31 06:28:00

0

必须先等待ImageOpened事件,然后才能获取宽度/高度值。这是因为BitmapImage是从URI加载时(即使文件是本地的)异步创建的。只有从流中加载时,它才会同步创建。

要注意的另一件事是BitmapImage.CreateOption默认设置为DelayCreation,这意味着它只会在将BitmapImage分配给活动树中的元素时创建。你可以设置CreateOption = None来改变它。