我开发了一个 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/