2009-12-07 33 views
0

我正在嘗試在WPF 4中編寫基於圖塊的遊戲。我希望遊戲板能夠縮放以適應窗口,所以我使用Viewbox;但我希望每個拼貼都位於一個清晰的像素邊界上。我可能是錯的,但我的理解是,這是新的UseLayoutRounding屬性應該是 - 但它沒有按我期望的方式工作。爲什麼UseLayoutRounding似乎不適用於Viewbox?

以下是一個演示問題的窗口:

<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> 

兩個矩形是相鄰的,但由於子像素座標(從視框的縮放產生)的,我最終之間深灰色接縫他們。這就是我想要擺脫的 - 我希望他們能夠無縫融合在一起。

但UseLayoutRounding似乎沒有這種效果。我試着在Window,Viewbox,Canvas,Rectangles上設置UseLayoutRounding="True" - 我甚至試着把它放在所有的一次。對接縫沒有影響。

我錯過了什麼(或誤解)?我如何才能使用Viewbox進行佈局舍入?

回答

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> 
+0

但這似乎做我想做的,但爲什麼不UseLayoutRounding做同樣的事情?我想了解ULR,所以我也可以使用Silverlight。 ULR是不是應該繞到最近的像素? – 2009-12-07 13:48:58

+0

同意的ULR應該這樣做。 D/Ling VS2010現在正在測試... – 2009-12-07 22:07:15

相關問題