2013-01-19 96 views
2

我想在WP8设备(Lumia 920)上显示一个简单的全屏位图。像素对齐在Windows Phone 8设备

它具有1280x768的屏幕,使用ScaleFactor 160和800x480的虚拟分辨率。

这里是显示黑/白棋盘位图的结果(这是模糊):

而且,显然,UseLayoutRounding无处不在。

所以,嗯,是否有可能在高分辨率的Windows Phone 8设备上像素对齐位图

更新:检查800x480模拟器(与800x480图像) - 完美清脆。 1280x768模拟器 - 模糊,与设备上相同:/

此外,打开​​(注意:1280x768图像)与viewport width=device-width导致相同的模糊图像。这是否意味着除了使用Direct3D之外,没有办法在Lumia上获得清晰的全屏图像?

XAML:

<phone:PhoneApplicationPage 
    x:Class="PhoneRt.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    SupportedOrientations="Portrait" Orientation="Portrait" 
    shell:SystemTray.IsVisible="True" UseLayoutRounding="True"> 
    <Canvas x:Name="LayoutRoot"> 
     <TextBlock x:Name="button">aaa</TextBlock> 
     <Image x:Name="viewport" UseLayoutRounding="True" Canvas.Left="0" Canvas.Top="0" Width="480" Height="800"></Image> 
    </Canvas> 
</phone:PhoneApplicationPage> 

缩放片段:

enter image description here

+0

你可以检查你是否没有意外创建Windows Phone 7项目?这些扩展了他们的所有用户界面,而不是渲染高分辨率。 – blakharaz

+0

不,这是一个WP8项目,WP7/7.5项目根本无法访问ScaleFactor属性:) – wizzard0

回答

1

我在模拟器中发挥了有点绕。首先,我认为这是因为你在代码背后设置了图像,但实际上似乎系统托盘是罪魁祸首。

  • 系统托盘关 - >很好,很脆。
  • 系统托盘已打开 - >灰色灰色。

这可能是因为systray从应用程序空间中切断的像素弄乱了缩放。如果您将系统托盘设置为有点透明,则用户无法看到该图像,并且屏幕空间较大。对我来说,这使得棋盘图形清脆而黑白。

尝试

shell:SystemTray.Opacity="0.99" 

在你的XAML文件。

+0

嗯,听起来不错。一旦我再次把手放在设备上,我一定会尝试。 – wizzard0