【问题标题】:How to get the width and height of an image如何获取图像的宽度和高度
【发布时间】:2011-03-31 05:56:55
【问题描述】:

我正在尝试获取如下图像的高度

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

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

【问题讨论】:

  • 您以后在项目中使用您的位图吗?

标签: c# xaml silverlight windows-phone-7


【解决方案1】:

您稍后会在项目中使用您的位图吗?如果你使用它作为 Image 中的 Source,你可以试试 Image.ActualHeight 和 Image.ActualWidth

【讨论】:

  • 我将它添加为图像的来源。我尝试了 ActualHeght 和 ActualWidth ,它们也只给出 0 。但我可以看到图像被添加到画布上。
  • 在 Image.ImageOpened 事件发生后尝试获取 ActualHeight 和 Width
【解决方案2】:

如果它不是从服务器加载的,它仍然可以异步加载和处理。如果您在知道图像可见后使用相同的Debug.WriteLine 调用,会得到正确的结果吗?

【讨论】:

  • 你能告诉我如何检查图像是否可见
  • 或者您可以尝试订阅事件 bitmapImage.ImageOpened
  • @saikamesh:为了测试的目的,我想你可以有一个按钮来记录日志......只是为了检查时间真的的问题。
【解决方案3】:

您必须等待 ImageOpened 事件才能获取 Width/Heigth 值。这是因为从 URI 加载时,BitmapImage 是异步创建的(即使文件是本地文件)。仅当您从流中加载它时,它才会同步创建。

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

【讨论】:

    猜你喜欢
    • 2011-05-31
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2011-11-26
    • 1970-01-01
    相关资源
    最近更新 更多