我开发了一个Windows Phone 8.1应用程序,它从我们的服务器下载一些数据并将这些文件复制到ApplicationData.Current.LocalCacheFolder
文件夹中。文件夹中还有不同缩放比例的图片。例如:
问题是我没有传递正确的文件名就无法访问这些文件。如果我尝试打开 image.png ,则会失败。但如果我试图打开例如 image.scale-140.png 效果很好。
如果我将图像作为资源插入到项目文件夹中,应用程序会决定哪个图像具有正确的缩放比例并选择它们。
我可以让自己的应用自动选择合适的图像吗?或者我必须手动确定缩放并确定存在哪些图像?
答案 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?