c# - 从 LocalCache 在 WP 8.1 应用程序中打开缩放图像文件

标签 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 它运行良好。

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

我能否让我的应用程序自动选择正确的图片?或者我必须手动确定比例并确定存在哪些图像?

最佳答案

你可以使用

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?

关于c# - 从 LocalCache 在 WP 8.1 应用程序中打开缩放图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31914920/

相关文章:

C++/CX 从绝对 url 读取文件

c# - PrinterSettings 不占用份数

C#获取连接到PC的可移植设备

python - 从多个拆分单个

c# - Windows Phone Silverlight 8.1 和 Windows Phone 8.1 开发的区别

c# - 从代码启动音乐应用程序

c# - 如何在 DDD 中对聚合建模并持久化到数据库

c# - 哈希码作为键控集合中的键

reactjs - 如何从前端下载图像?

c# - 使用 GridView 中的分页在 UWP 中加载图像