0

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>

2 つの長方形は隣接していますが、サブピクセル座標 (Viewbox のスケーリングの結果) のため、それらの間に暗い灰色の継ぎ目ができてしまいます。それが私が取り除こうとしているものです-私はそれらがシームレスに混ざり合うことを望んでいます.

しかし、 UseLayoutRounding にはこの効果がないようです。UseLayoutRounding="True"Window、Viewbox、Canvas、Rectangles に設定してみました。一度にすべてに設定してみました。縫い目への影響はありません。

何が欠けていますか (または誤解していますか)? ビューボックスでレイアウトの丸めを機能させるにはどうすればよいですか?

4

1 に答える 1

3

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>
于 2009-12-07T01:52:18.223 に答える