如何在silverlight / WP7(彩色蒙版)中更改图像的颜色?

时间:2010-10-16 20:54:10

标签: silverlight windows-phone-7

我有一个带有png的切换按钮,该按钮具有透明背景和黑色前景。如果选择了该按钮,则我希望图像的黑色更改为用户选择的颜色。有没有办法在Silverlight和/或wp7中执行此操作?

例如:

<ToggleButton>
    <Image Source="MyImage.png" />
</ToggleButton>

MyImage.png具有透明背景和黑色前景。用户首选的颜色为红色。当按钮打开时,我希望图像的黑色前景变为红色。

2 个答案:

答案 0 :(得分:22)

我会尝试使用OpacityMask方法。基本上应该看起来像这样:

<Rectangle Fill="Red">
  <Rectangle.OpacityMask>
    <ImageBrush ImageSource="MyImage.png"/>
  </Rectangle.OpacityMask>
</Rectangle>

通过更改矩形的填充属性,您将获得不同的彩色图像。

答案 1 :(得分:0)

用户对颜色有多少控制权?

如果他们从有限集合中挑选(例如红色,绿色,蓝色,黑色,棕色),那么最简单的方法是将图像源绑定到一个保存图像名称的变量,然后更改哪个名称保存在该变量中。

如果他们可以选择任何颜色,那么您需要进行一些图像处理,将参考图像的黑色像素更改为所选颜色,将其写入隔离存储,然后将图像源绑定到该新文件。

另一种方法是在XAML中绘制按钮,然后您可以直接控制前景色。 This MSDN page描述了绘图的基础知识。您可以使用相同的命令在按钮上定义图像,如Scott Gu的博客this page中所述:

image of code from blog

(这是博客代码的图片)。

如果将颜色绑定到变量,则用户可以更改图像的颜色。它确实依赖于你能够在XAML中绘制图像。