我已将Grid的背景画笔设置为ImageBrush 但是当我将Grid的FlowDirection设置为RightToLeft时,图像会被水平翻转。
是否可以使用某种转换或任何其他方式(un)翻转网格背景ImageBrush?
答案 0 :(得分:1)
你可以用合理的方法做到这一点(同样的方法远非明智)。
而是使用Grid.RowSpan,Grid.ColumnSpan将Image元素作为Grid中的第一个项目来覆盖所有单元格。在图像上使用Stretch =“Fill”,因为背景通常表现如何。
答案 1 :(得分:0)
嗯,我确实理解我的评论已经过时了,但是这个问题突然出现在谷歌搜索的第一个问题中,所以这是我的解决方案:
我正在本地化从右到左文化的应用程序。设置FlowDirection = RTL的简单决定带来了意想不到的缺点,例如包含公司徽标的背景被翻转。我已经为用于渲染背景的图像画笔应用了矩阵变换:
var mbgBrush = TryFindResource("MainBackground") as Brush;
if (mbgBrush == null) return null;
if (FlowDirection == FlowDirection.LeftToRight) return mbgBrush;
var mainBgImageBrush = mbgBrush as ImageBrush;
if (mainBgImageBrush == null) return mbgBrush;
var flipXaxis = new MatrixTransform(-1.0, 0, 0, 1.0, 1, 0);
var flippedBrush = new ImageBrush
{
Stretch = Stretch.None,
Opacity = 1.0,
ImageSource = mainBgImageBrush.ImageSource,
RelativeTransform = flipXaxis
};
return flippedBrush;