WPF 3.5中的抗锯齿不一致

jef*_*ora 9 .net wpf antialiasing

我使用FluidKit的 ElementFlow控件在WPF应用程序中获得奇怪的别名行为.我们在工作中的应用程序中使用控件来呈现内容,并且当ElementFlow的元素倾斜时,边缘别名如下图所示: 别名边缘

为了避免混叠,我们决定摆脱倾斜角度,所以我创建了一个快速测试应用程序,我将倾斜角度,项目间隙和弹出距离限制在滑块上,这样我就能找到最好看的东西.

但是,在使用相同设置的测试应用程序中,边缘很好地消除锯齿: 抗锯齿边缘

我假设有一些设置在XAML层次结构的某个地方控制它,但我已经尝试设置SnapsToDevicePixels各种元素和样式,无论是在设计时还是运行时(使用绑定和像Snoop这样的工具)无济于事.

ElementFlow的XAML如下:

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <Fluid:ElementFlow
            x:Name="ContentElementFlow"
            SelectedIndex="{Binding SelectedIndex}"
            Focusable="True"
            TiltAngle="15.95"
            ItemGap="0.722"
            FrontItemGap="0.052"
            PopoutDistance="1.631"
            HasReflection="False"
            Background="Transparent"
            CurrentView="{StaticResource CoverFlowView}"
            ElementWidth="175"
            ElementHeight="250"
            >
            <Fluid:ElementFlow.Camera>
                <PerspectiveCamera
                    FieldOfView="60"
                    Position="0,0,6"
                    LookDirection="0,0,-6"
                    UpDirection="0,1,0"
                    />
            </Fluid:ElementFlow.Camera>
        </Fluid:ElementFlow>
    </ItemsPanelTemplate>
</ListView.ItemsPanel>
Run Code Online (Sandbox Code Playgroud)

我还在两台不同的机器上试过这两个应用程序(一台运行XP Pro,一台XP Embedded,都有不同级别的专用图形),两者都在一个应用程序中显示别名,另一个应用程序显示抗锯齿.

有没有人知道可以用来控制它的任何设置或XAML属性?

Bra*_*ham 1

如果我没记错的话,WPF 3.5 中有一个关于这种情况下的别名的错误,我一生都找不到相关信息,但据我所知,这是一个 Direct X 标志,WPF 没有正确设置。

我记得发现如果将有问题的元素包装在某些类型的父元素中,似乎可以解决问题。例如,我认为将有问题的元素包装在空边框中可以解决问题吗?再说一次,我一生都无法再次找到这些信息,但如果我找到它,我会更新我的答案。

我认为您在应用程序之间看到的差异与此有关。在显示别名的应用程序中,ItemTemplate 中的项目是否包装在某种父元素中(而测试应用程序则不是)?或者反之亦然?

抱歉,我无法提供更多帮助,仍在寻找信息,但今天我的 Google 能力似乎很弱。

更新:好吧,我找到了我的想法。

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/7382637b-b4bc-4a46-8bed-f36250a65385/

这与效果有关,所以也许这与您看到的不是同一件事,但值得一试。