Как я могу изменить цвет изображения в silverlight / WP7 (Color Mask)? - PullRequest
11 голосов
/ 17 октября 2010

У меня есть кнопка с png, которая имеет прозрачный фон и черный передний план. Если кнопка выбрана, то я хочу, чтобы черный цвет изображения изменился на цвет, выбранный пользователем. Есть ли способ сделать это в Silverlight и / или wp7?

Так, например:

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

MyImage.png имеет прозрачный фон и черный передний план. Предпочтительный цвет пользователя - красный. Когда кнопка включена, я хочу, чтобы черный передний план изображения стал красным.

Ответы [ 2 ]

22 голосов
/ 17 октября 2010

Я бы попробовал подход OpacityMask. По сути, это должно выглядеть примерно так:

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

изменяя свойство заливки прямоугольника, вы получите разноцветное изображение.

0 голосов
/ 17 октября 2010

Какой контроль имеет пользователь над цветом?

Если они выбирают из ограниченного набора (например, красного, зеленого, синего, черного, коричневого), то самым простым способом было бы связатьисточник изображения - переменная, которая содержит имя изображения и затем меняет имя, которое содержится в этой переменной.

Если они могут выбрать любой цвет, вам необходимо выполнить некоторую обработку изображения, чтобы изменить черные пикселиопорное изображение с выбранным цветом, пишет, что в изолированное хранилище, а затем связать источник изображения на этот новый файл.

1006 * Другой альтернативой является сделать кнопку в XAML, а затем вы можете иметь прямой контроль над цветом переднего плана, Эта страница MSDN описывает основы рисования.Вы можете использовать те же команды для определения изображения на кнопке, как описано на этой странице из блога Скотта Гу:

image of code from blog

(это изображениекода из блога).

Если вы связываете цвет с переменной, то пользователь может изменить цвет изображения.Это зависит от того, сможете ли вы нарисовать изображение в XAML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...