2009-12-07 4 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> 

두 사각형은 인접하지만 때문에 (뷰 박스의 크기 조절로 인한) 서브 화소 좌표를, I는 어두운 회색 솔기 사이 끝낼 그들. 그게 제가 제거하려고하는 것입니다. 나는 그들이 완벽하게 융합되기를 바랍니다.

그러나 UseLayoutRounding에는이 효과가없는 것 같습니다. 창,보기 상자, 캔버스, 직사각형에 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> 
내가하고 싶은 일을하는 것처럼 보인다, 그런데 왜 같은 일을하지 UseLayoutRounding 않습니다
+0

? 나는 Silverlight도 사용할 수 있도록 ULR을 이해하고 싶습니다. ULR이 가장 가까운 픽셀로 반올림되지 않습니까? –

+0

합의 ULR이해야 할 일입니다. D/Ling VS2010 지금 테스트 ... –