Xaml windows phone 8设备上的像素对齐

Xaml windows phone 8设备上的像素对齐,xaml,layout,windows-phone-8,pixel,pixel-perfect,Xaml,Layout,Windows Phone 8,Pixel,Pixel Perfect,我试图在WP8设备(Lumia 920)上显示一个简单的全屏位图 它有1280x768屏幕,使用160和800x480的虚拟分辨率 以下是显示黑白棋盘位图(模糊)的结果: (请注意,这应该是黑白棋盘,而不是暗灰色/浅灰色,请注意文本像素要白得多。) 显然,uselayoutround在任何地方都是正确的 那么,嗯,可以在高分辨率Windows Phone 8设备上对位图进行像素对齐吗 更新:在800x480仿真器上检查(带有800x480图像)-非常清晰。1280x768仿真器-模糊,与

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

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

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

  • (请注意,这应该是黑白棋盘,而不是暗灰色/浅灰色,请注意文本像素要白得多。)
显然,
uselayoutround
在任何地方都是正确的

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

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

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

XAML:


aaa
缩放片段:


我在emulator中对其进行了一些尝试。首先,我认为这是因为您在代码中设置了映像,但实际上似乎系统托盘是罪魁祸首

  • 系统托盘关闭->又好又脆
  • 系统托盘打开->灰色为灰色
可能是由于systray从应用程序空间中截取的像素破坏了缩放效果。如果将系统托盘设置为稍微透明一点,用户将看不到这一点,并且屏幕空间更大。对我来说,这使得棋盘图形清晰且黑白相间

试一试


在您的XAML文件中。

您能检查一下您是否无意中创建了一个Windows Phone 7项目吗?这些项目放大了所有的UI,而不是为了高分辨率而渲染。不,这是一个WP8项目,WP7/7.5项目根本没有访问ScaleFactor属性的权限:)嗯,听起来不错。一旦我再次接触到这个设备,我一定会尝试一下。
<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>
shell:SystemTray.Opacity="0.99"