繁体   English   中英

为什么UseLayoutRounding似乎不适用于Viewbox?

[英]Why does UseLayoutRounding not seem to work with Viewbox?

我正在尝试使用WPF 4编写基于图块的游戏。我希望游戏板可以缩放以适合窗口,因此我使用的是Viewbox。 但我希望每个图块都位于一个清晰的像素边界上。 我可能是错的,但我的理解是,这就是应该使用的新UseLayoutRounding属性,但它不能按我期望的方式工作。

这是一个演示问题的窗口:

<Window x:Class="Tyler.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Width="600" Height="400" Background="Black">
    <Viewbox>
        <Canvas Width="1000" Height="1000">
            <Rectangle Canvas.Left="100" Canvas.Top="100"
                       Width="100" Height="100" Fill="Gray"/>
            <Rectangle Canvas.Left="200" Canvas.Top="100"
                       Width="100" Height="100" Fill="Gray"/>
        </Canvas>
    </Viewbox>
</Window>

这两个矩形是相邻的,但是由于子像素坐标(由Viewbox缩放而来),我最终在它们之间得到了较深的灰色接缝。 这就是我要摆脱的-我希望它们无缝地融合在一起。

但是UseLayoutRounding似乎没有这种效果。 我试过在Window,Viewbox,Canvas,Rectangles上设置UseLayoutRounding="True" -我什至尝试一次将其放置在所有对象上。 对接缝没有影响。

我缺少什么(或误解)? 如何使布局取整与Viewbox一起使用?

SnapsToDevicePixels=True就是你想要的

<Viewbox SnapsToDevicePixels="True" >
    <Canvas Width="1000" Height="1000">
        <Rectangle Canvas.Left="100" Canvas.Top="100"
                   Width="100" Height="100" Fill="Gray"/>
        <Rectangle Canvas.Left="200" Canvas.Top="100"
                   Width="100" Height="100" Fill="Gray"/>
    </Canvas>
</Viewbox>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM