我有一个简单的XAML片段,它放置了一组瓷砖,每个瓷砖都带有背景图像图标。
<Grid.Background>
<ImageBrush Stretch="None"
ImageSource="{Binding ImageSource}"
AlignmentY="Center"
AlignmentX="Center"/>
</Grid.Background>
这种方法很好,除了背景图像完美填充方块。我确信XAML认为这很好,但实际上它需要大约一半的尺寸来匹配规格。
我尝试了几种方法,包括在网格上添加边框(截断背景图像,保持尺寸,但在侧面和顶部将其切掉),并在不同位置添加边距和填充。
我也玩这个正常,但一切都漂浮在这个背景图像的顶部,所以这不是一个选项。
最后我应该提到这是一个使用Windows运行时的Windows 8 Windows应用商店应用,因此我在这里无法使用WPF中的某些功能(如ViewPort)。
问题:如何调整XAML网格背景图像的大小/尺寸?
旁注:我认为解决方案可能在于变革......?
更新:每张海报请求都是预期的结果。即使它看起来在这里没有浮动背景图像,在其他地方文本浮在背景上。这就是为什么它需要是一个而不是一个元素。
现在的样子:
应该如何看待:
答案 0 :(得分:11)
缩放渲染变换应该按照您的意愿执行:(您可能需要设置CenterX和CenterY以使其看起来完全符合您的需要)
<Grid.Background>
<ImageBrush Stretch="None"
ImageSource="{Binding ImageSource}"
AlignmentY="Center"
AlignmentX="Center">
<ImageBrush.Transform>
<ScaleTransform ScaleX=".5" ScaleY=".5"/>
</ImageBrush.Transform>
</ImageBrush>
</Grid.Background>
答案 1 :(得分:1)
您可以将ImageBrush压缩到自定义ViewPort中,以便它可以达到您想要的大小。
有一些信息:http://keyvan.io/viewbox-and-viewport-in-windows-presentation-foundation
如果你想减少一半,那么你的开始x&amp; y应该是0.25并且结束x,y 0.75。 像这样的东西应该有把戏:
<Grid.Background>
<ImageBrush Stretch="None"
ImageSource="{Binding ImageSource}"
AlignmentY="Center"
AlignmentX="Center"
Viewport="0.25, 0.25, 0.75, 0.75"/>
</Grid.Background>
//为Win8编辑可能:
<Grid>
<Grid>
<Grid.RenderTransform>
<ScaleTransform RenderTransformOrigin="0.5, 0.5" ScaleX="0.5" ScaleY="0.5" />
</Grid.RenderTransform>
<Grid.Background>
<ImageBrush Stretch="None"
ImageSource="{Binding ImageSource}"
AlignmentY="Center"
AlignmentX="Center"/>
</Grid.Background>
</Grid>
</Grid>