4

在 Windows Store App 中创建图像时,如何控制从磁盘读取数据的时间?

在 WPF 中,您可以使用BitmapCacheOptions控制何时从磁盘读取图像。BitmapCacheOptions.OnDemand会推迟从磁盘读取数据,直到实际需要图像数据。这样做有一些缺点:

  • IO 成本通常表现为 UI 延迟;
  • 如果使用流作为图像源,则无法关闭流;
  • 如果文件被用作图像源,则该文件被锁定。

要解决该问题,您可以使用BitmapCacheOptions.OnLoad立即将图像读入内存。

您如何控制图像数据何时加载到 Windows 应用商店应用程序的内存中?

WPF 代码看起来像这样:

var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.UriSource = path;
bitmapImage.EndInit();
bitmapImage.Freeze();

编辑- 更多信息

WPA 显示将 8.8mb 的图像放到屏幕上需要大约 330 毫秒。其中,170ms 用于文件 IO(包括 37ms 用于杀毒检查文件),160ms 用于 WIC 解码。

任何想法如何控制文件 IO 何时发生或如何触发 WIC 解码? 右键单击并在新选项卡中打开以查看完整大小 (右击并在新标签页中打开查看完整尺寸)

4

1 回答 1

0

对于 Windows 商店应用程序,我建议查看 AccessCache API - http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.accesscache.aspx

特别是StorageApplicationPermissions类。有了它,您可以添加各种要访问的存储项目。

查看FilePickerSampl e(或FileAccessSample)应用程序,了解有关如何使用它的更多信息。

于 2013-10-23T20:15:32.977 回答