如何创建不在 WPF 中拉伸的重复可滚动背景?
How to create a repeated scrollable background that does not stretch in WPF?
我想创建一个重复的可滚动背景,当 window 尺寸变小时不会拉伸。这是我的简化代码及其结果:
<ScrollViewer Grid.Column="0" x:Name="leftpan" Grid.ColumnSpan="2">
<Grid Height="1000" Width="{Binding Width, ElementName=ppp}" ShowGridLines="False" >
<Grid.Background>
<ImageBrush ImageSource="bg/libChef2.png" TileMode="Tile" Viewport="0,0,0.2,0.2" />
</Grid.Background>
<WrapPanel x:Name="bookraw" >
<WrapPanel.Effect>
<DropShadowEffect Direction="270" ShadowDepth="8" Opacity="0.6" BlurRadius="6"/>
</WrapPanel.Effect>
</WrapPanel>
</Grid>
</ScrollViewer>
上面代码的结果是这样的:
我的结构应该是这样的:背景网格随着上下滚动而移动,当滚动宽度改变时,重复的背景不会水平拉伸。
当容纳背景的网格宽度发生变化时,它的背景图块会拉伸。但在 Height 它没有问题,因为它的高度是恒定的。主要目标是让滚动查看器具有平铺背景,其背景不会拉伸。
对于固定的图块大小,以绝对单位设置 ImageBrush 的视口:
<ImageBrush ImageSource="bg/libChef2.png" TileMode="Tile"
Viewport="0,0,100,100" ViewportUnits="Absolute" />
我想创建一个重复的可滚动背景,当 window 尺寸变小时不会拉伸。这是我的简化代码及其结果:
<ScrollViewer Grid.Column="0" x:Name="leftpan" Grid.ColumnSpan="2">
<Grid Height="1000" Width="{Binding Width, ElementName=ppp}" ShowGridLines="False" >
<Grid.Background>
<ImageBrush ImageSource="bg/libChef2.png" TileMode="Tile" Viewport="0,0,0.2,0.2" />
</Grid.Background>
<WrapPanel x:Name="bookraw" >
<WrapPanel.Effect>
<DropShadowEffect Direction="270" ShadowDepth="8" Opacity="0.6" BlurRadius="6"/>
</WrapPanel.Effect>
</WrapPanel>
</Grid>
</ScrollViewer>
上面代码的结果是这样的:
我的结构应该是这样的:背景网格随着上下滚动而移动,当滚动宽度改变时,重复的背景不会水平拉伸。
当容纳背景的网格宽度发生变化时,它的背景图块会拉伸。但在 Height 它没有问题,因为它的高度是恒定的。主要目标是让滚动查看器具有平铺背景,其背景不会拉伸。
对于固定的图块大小,以绝对单位设置 ImageBrush 的视口:
<ImageBrush ImageSource="bg/libChef2.png" TileMode="Tile"
Viewport="0,0,100,100" ViewportUnits="Absolute" />