代码之家  ›  专栏  ›  技术社区  ›  Micah

如何在Silverlight/WP7(颜色掩码)中更改图像的颜色?

  •  11
  • Micah  · 技术社区  · 15 年前

    我有一个带有PNG的切换按钮,它有一个透明的背景和一个黑色的前景。如果选择了按钮,那么我希望图像的黑色变为用户选择的颜色。在Silverlight和/或WP7中是否有这样的方法?

    例如:

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

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

    2 回复  |  直到 15 年前
        1
  •  22
  •   Denis    15 年前

    我想试试猫眼石的方法。基本上应该是这样的:

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

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

        2
  •  0
  •   Community Mohan Dere    9 年前

    用户对颜色有多大的控制?

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

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

    另一种选择是在XAML中绘制按钮,然后可以直接控制前景颜色。 This msdn page describes the basics of drawing.您可以使用相同的命令定义按钮上的图像,如scott gu's blog中的

    (这是博客中代码的图像)。

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

    Ted设置(例如红色、绿色、蓝色、黑色、棕色),那么最简单的方法是将图像源绑定到保存图像名称的变量,然后更改该变量中保存的名称。

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

    另一种选择是在XAML中绘制按钮,然后可以直接控制前景颜色。 This MSDN page 描述绘图的基础知识。可以使用相同的命令定义按钮上的图像,如中所述 this page 从顾司各特的博客:

    image of code from blog

    (这是来自博客的代码图像)。

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