2010-12-21 31 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%x 50%),或者0,0,0.25, 0.1会产生4x10平铺等等......

但是,这仍然不能防止图像重新缩放。所以在你的情况下,你可能想要的是将视口设置为图像的大小,并将ViewportUnits设置为Absolute而不是RelativeToBoundingBox。

在下面的xaml中,我有一个24x24像素的图像,所以我相应地设置了我的视口。这将为网格的整个大小重复平铺图像。如果网格调整大小,则会出现更多的图块。

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

我希望有帮助。

+0

YEAH!这正是我想要的,谢谢! :) – Jalal 2010-12-21 20:37:20

相关问题