从LocalCache打开WP 8.1应用程序中的缩放图像文件

时间:2015-08-10 08:28:22

标签: c# image windows-phone-8.1 image-scaling

我开发了一个Windows Phone 8.1应用程序,它从我们的服务器下载一些数据并将这些文件复制到ApplicationData.Current.LocalCacheFolder文件夹中。文件夹中还有不同缩放比例的图片。例如:

  • image.scale-100.png
  • image.scale-140.png
  • image.scale-240.png

问题是我没有传递正确的文件名就无法访问这些文件。如果我尝试打开 image.png ,则会失败。但如果我试图打开例如 image.scale-140.png 效果很好。

如果我将图像作为资源插入到项目文件夹中,应用程序会决定哪个图像具有正确的缩放比例并选择它们。

我可以让自己的应用自动选择合适的图像吗?或者我必须手动确定缩放并确定存在哪些图像?

1 个答案:

答案 0 :(得分:0)

您可以使用

Windows.Graphics.Display.DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;

这是必需的缩放,因此您可以尝试找到最接近实际所需缩放的图像,例如:

var possibleRatios = new List<double>();
possibleRatios.Add(1.0);
possibleRatios.Add(1.4);
possibleRatios.Add(2.4); //etc.
double ratio = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
double closest = possibleRatios.Aggregate((x,y) => Math.Abs(x-ratio) < Math.Abs(y-ratio) ? x : y);

string imageName = "image.scale-" + (int(closest * 100)).ToString() + ".png";

找到最接近缩放的算法取自这个问题的答案: How to get the closest number from a List with LINQ?