是否可以在WPF中更改ImageBrush颜色?

时间:2012-01-16 02:34:53

标签: wpf silverlight

我正在尝试做一些非常简单的事情,但我不确定它是否可行。我有这张图片:

Tile target

在我的棋盘游戏项目中,我使用它来指示鼠标在棋盘中的位置和类似的东西(作为棋盘的8x8网格,里面有一个矩形)。我也将网格单元格背景画笔设置为具有蓝色和.25不透明度的SolidColorBrush,而位于其上方的矩形与目标相反,反之亦然,因为我无法达到我想要的效果,也就是说,黑色的部分变为全蓝色,作为我的画笔,而其余部分保持不透明等等。我做的方式,有可能使黑色部分变成蓝色,具有半透明背景,但是边框中的颜色还不是很正确:

enter image description here

我不知道我是否能够清楚自己,但我想这张照片显示了我的目标。

代码:

            ImageBrush targetBrush = new ImageBrush();
            targetBrush.ImageSource = new BitmapImage(new Uri("Resources/GameScreen/selectedTile.png", UriKind.Relative));
            targetBrush.Opacity = 1;

            SolidColorBrush backBrush = new SolidColorBrush(Colors.Blue);
            backBrush.Opacity = .25;

            tile.Children.Add(new Rectangle());
            foreach (object target in tile.Children)
            {
                if (target.GetType() == typeof(Rectangle))
                {

                    ((Rectangle)target).Fill = backBrush;
                }
            }



            tile.Background = targetBrush;

提前致谢。

1 个答案:

答案 0 :(得分:2)

由于图片只是一个掩码,您可以使用Rectangle,并为图片设置蓝色FillOpacityMask