如何在 Metro (UWP) 中获取 BitmapImage 的宽度和高度?

Posted

技术标签:

【中文标题】如何在 Metro (UWP) 中获取 BitmapImage 的宽度和高度?【英文标题】:How to get the width and height of a BitmapImage in metro (UWP)? 【发布时间】:2012-07-19 06:12:49 【问题描述】:

我正在从事地铁应用程序。

我使用的是BitmapImage,自从构造函数以来我设置了Uri,但我意识到PixelWidthPixelHeight一直返回0(我也验证了@ 987654326@是正确的)。

我找不到另一个返回这些属性的类。我在想是否有办法通过字节数组或类似的方式获取这些数据。你怎么看?

【问题讨论】:

假设您是从本地文件系统/资源加载,尝试等到下一个主线程循环加载位图。如果它来自网络/互联网源,您可能需要等待下载的时间长一点。 【参考方案1】:

检查 CacheOption 属性并设置为 BitmapCacheOption.None。您也可以尝试转换为 WriteableBitmap。 如果我说的不是真的,对不起,因为我无法测试。 Xaml(仅限 wpf)xD

【讨论】:

我已将 CacheOption 设置为 BitmapCacheOption.None 但它不起作用 请记住,在将图像传递给源之前,您必须更改 BitmapCache。那么然后尝试投射一个 WriteableBitmap....【参考方案2】:

BitmapImagePixelWidthPixelHeight 返回0(如果未加载图像)。图像仅在实际使用时加载,例如分配给Image.Source 并显示。那是……有问题的。使用BitmapCacheOption.None 没有帮助,它只适用于 WP7。

正确的解决方案是使用BitmapDecoder:

var stream = await storageFile.OpenReadAsync();
var decoder = await BitmapDecoder.CreateAsync(stream);
var size = new BitmapSize  Width = decoder.PixelWidth, Height = decoder.PixelHeight ;

找到this solution on MSDN forums。

【讨论】:

以上是关于如何在 Metro (UWP) 中获取 BitmapImage 的宽度和高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Metro 中获取 React Native 变体?

UWP:开始菜单磁贴文本颜色

在 WinRT Metro App C# 中获取操作系统版本

win10 UWP MessageDialog 和 ContentDialog

win10中,类似uwp的图标可以在哪里找到?

如何在 UWP 中获取单播、Dns 和网关地址?