如何以编程方式更改图像颜色?

时间:2014-04-02 14:27:52

标签: c# wpf image background-color

我有一个方法,每次用户执行一个动作时触发,在这个方法中,我想触发图像的颜色,以便每次调用方法时改变颜色/亮起。

是否有一种以编程方式更改图像颜色的简单方法?我无法看到附加到图像上的任何明显的方法或属性。

所以下面的方法如下:不确定如何设置BoxBagImage

的图像颜色
void matcher_GestureMatch(Gesture gesture)
{
     lblGestureMatch.Content = gesture.Name;
     scoreCntr++;

     boxBagImage.    // <-- don't see any color or background property belonging to the image
     lblScoreCntr.Content = scoreCntr;            
}

1 个答案:

答案 0 :(得分:2)

它会做什么设置? WPF应该如何猜测&#34;背景&#34;你记得吗?可以称之为&#39;背景&#39;有几件事情。另外,WPF如何猜测您认为背景区域的大小?

让我们从图像在其整个区域显示位图(或类似图片)的事实开始,因此直接ForegroundBackground在这里毫无意义。它们会立即透过位图透支。它不像TextBox或Canvas。

这可能是Image没有这种财产的原因。

-

如果你的位图本身有一个&#34;背景&#34; (即,蓝天,天空=背景上的树的绘图),仍然位图的内容。 WPF不是图像编辑程序,不会轻易改变它。如果你想改变&#34;背景&#34;使用图像,您可以加载位图,修改其像素,并将修改后的位图加载到图像控件中。或者在渲染阶段应用一些智能滤镜(所谓的&#34;效果&#34;)。

或者,如果你的位图是透明的(例如,带有alpha通道的PNG,一个完全alpha化透明像素的树),你想要&#34;一些背景&#34;透过那个&#34;透明的间隙&#34;,你必须设置图像本身的背景,但是图像所在的组件。所以,如果你有例如:

<Grid>   <Image Source=.... />   </Grid>

然后在Background上应用Grid。放置在蓝色网格上的透明图像看起来就像是在蓝色背景上,就像在蓝色桌子上放置的玻璃上绘图一样。事实上,Grid在这里只是形成背景。您可以通过这种方式获得任何布局或效果。如果您不想在该颜色中使用整个网格,则可以注入另一个网格:

<Grid>
    <Grid Background="Blue" Margins="30,30,30,30"> <Image Source=.... /> </Grid>
</Grid>

或者你喜欢什么。

或者,如果你的意思是&#34;背景&#34;当ImageStretch属性设置的方式显示的图像控件时,位图不会填满整个区域(Stretch=Uniform喜欢这样做,除非你仔细设置宽度/高度) - 然后只需看上面。 &#34;区域&#34;只是透明,所以只需在Image下方的组件中添加一些颜色。