我有一个带有png的切换按钮,该按钮具有透明背景和黑色前景。如果选择了该按钮,则我希望图像的黑色更改为用户选择的颜色。有没有办法在Silverlight和/或wp7中执行此操作?
例如:
<ToggleButton>
<Image Source="MyImage.png" />
</ToggleButton>
MyImage.png具有透明背景和黑色前景。用户首选的颜色为红色。当按钮打开时,我希望图像的黑色前景变为红色。
答案 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中所述:
(这是博客代码的图片)。
如果将颜色绑定到变量,则用户可以更改图像的颜色。它确实依赖于你能够在XAML中绘制图像。