2010-12-21 4 views
6

나는 ImageBrush에 문제가 :크기 조정 중에 ImageBrush의 크기를 조정하지 마십시오. 반복하십시오!

<Window ... > 
    <Grid> 
     <Grid.Background> 
      <ImageBrush ImageSource="Controls\Images\notebook_paper_Line.jpg" TileMode="FlipX" 
         Viewport="0,0,1,0.09" /> 
     </Grid.Background>   
    </Grid> 
</Window> 

나는 사용자가 창 크기를 조정하면서 이미지를 반복합니다. 그러나 현재 사용자가 창 크기를 조정하는 동안 이미지의 크기가 조정됩니다. 이미지 크기가 작고 반복하기 위해 TileModeViewport을 사용합니다. 크기를 조정하는 동안 문제가 발생합니다.).

모든 XAML 코드가 우수합니다! :)

나는 나쁜 영어로 유감 스럽다!

답변

13

기본적으로 TileBrush의 뷰포트는 0,0,1,1이며 ViewportUnits는 RelativeToBoundingBox입니다. 즉, 0,0,1,1이 전체 대상 크기에 매핑됩니다 (이 경우에는 격자).

그래서 ImageBrush를 바둑판 식으로 배열하려면 뷰포트를 조정해야합니다. 뷰포트를 0,0, .5, .5로 설정하면 이미지가 2 x 2로 바둑판 모양으로 표시됩니다 (각 타일은 그리드 크기의 50 % x50 %이므로 0,0,0.25, 0.1은 4x10 타일링 등을 생성합니다.

그러나 그래도 이미지의 크기가 조정되지 않습니다. 따라서 원하는 경우 이미지의 크기로 뷰포트를 설정하고 RelativeToBoundingBox 대신 ViewportUnits를 Absolute로 설정하는 것이 좋습니다.

아래의 xaml에는 24x24 픽셀 이미지가 있으므로 적절하게 뷰포트를 설정합니다. 그리드의 전체 크기에 대해 이미지를 반복하여 바둑판 식으로 배열합니다. 눈금 크기를 조정하면 더 많은 타일이 나타납니다.

<ImageBrush ImageSource="Images\book_green.png" TileMode="FlipX" 
      Viewport="0,0,24,24" ViewportUnits="Absolute" /> 

도움이 되었기를 바랍니다.

+0

예! 그게 내가 원하는거야, 고마워! :) – Jalal