Windows Phone 8设备上的像素对齐

时间:2013-01-19 00:51:33

标签: xaml layout windows-phone-8 pixel pixel-perfect

我试图在WP8设备上显示一个简单的全屏位图(Lumia 920)。

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

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

显然,UseLayoutRounding无处不在。

那么,嗯,是否可以在高分辨率Windows Phone 8设备上对位图进行像素对齐

更新:在800x480模拟器上检查(800x480图像) - 非常清晰。 1280x768仿真器 - 模糊,与设备上相同:/

此外,使用viewport width=device-width打开Web page with checkerboard background(注意:1280x768图像)会产生相同的模糊图像。这是否意味着除了使用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

1 个答案:

答案 0 :(得分:1)

我在模拟器中玩了一下。首先我认为这是因为你在后面的代码中设置了图像,但实际上系统托盘似乎是罪魁祸首。

  • 关闭系统托盘 - &gt;好又清脆。
  • 系统托盘打开 - &gt;灰色的灰色。

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

尝试

shell:SystemTray.Opacity="0.99"

在您的XAML文件中。