我正在将WP7应用程序移植到WP8,并且在非WVGA屏幕上图标变得模糊。我希望应用程序有清晰的图标。我一直在MSDN上阅读Multi-resolution guide以获取有关这方面的指导,但我还不完全清楚。
建议仅提供WXGA资产。为每个分辨率提供图像是否有任何价值(例如:logo.screen-wvga.png,-wxga.png,-720p.png)?生成每个分辨率对我来说相当容易,而且我并不担心增加封装尺寸。我想知道如果操作系统没有缩小资产,资产是否会有更高的质量(有时?)。这不适用于需要填充屏幕区域的背景图像 - 它适用于整个应用程序中使用的徽标和中小型图标。
假设我只制作一个WXGA版本的图标。在XAML中描述图像的正确方法是什么?如果我在WP7上的WVGA屏幕的原始图像是37像素×36像素,我通过将尺寸乘以1.6来生成WXGA。我的图像现在是59像素×58像素(圆形)。如果我有<Image Source="MyWxgaIcon.png"/>
并在WXGA仿真器上运行它,那么操作系统会将其夸大另外1.6倍的因子。我似乎需要指定原始的预缩放图像的尺寸,如<Image Soruce="MyWxgaIcon.png" Width="37" Height="36"/>
。这似乎不自然,因为资产没有那些维度 - 这是预期的方式吗?
感谢。
答案 0 :(得分:0)
WP8多分辨率的工作方式总是宽度为480个逻辑像素(高度为800或853.3像素),所有元素都是使用逻辑像素描述的。 没有内置的方法来提供多资产资产。建议的方法是提供高分辨率的资产,并让操作系统缩小它们。更复杂的解决方案需要一些代码。
另见http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206974(v=vs.105).aspx
答案 1 :(得分:0)
几天前我遇到了同样的困惑。 “Windows Phone 8的多分辨率应用程序”文章实际上没有明确指出如果只提供WXGA资产我们可以让XAML正确显示图像。我通过以下两个教程找到了解决方案:
http://www.silverlightshow.net/items/Windows-Phone-8-Multiple-Screen-Resolutions.aspx http://msdn.microsoft.com/en-us/library/aa970269.aspx
事实证明,您不需要明确声明高度:
<Image Source="MyWxgaIcon.png" Width="37" />
但是,当您在WVGA设备上运行应用程序时,这种方式会占用更多内存。在这种情况下,图像按比例缩小显示,但实际大小(以像素为单位)仍保持不变。
因此,更优化的方式是:
<Image Width="37">
<Image.Source>
<BitmapImage DecodePixelWidth="37" UriSource="MyWxgaIcon.png" />
</Image.Source>
</Image>