Как изменить цвет изображения в silverlight/WP7 (Color Mask)?
У меня есть кнопка переключения с png с прозрачным фоном и черным передним планом. Если кнопка выбрана, я хочу, чтобы черный цвет изображения изменился на цвет, выбранный пользователем. Есть ли способ сделать это в Silverlight и/или wp7?
Итак, например:
<ToggleButton>
<Image Source="MyImage.png" />
</ToggleButton>
MyImage.png имеет прозрачный фон и черный передний план. Предпочтительный цвет пользователя - красный. Когда кнопка переключается, я хочу, чтобы черный передний план изображения стал красным.
Ответы
Ответ 1
Я бы попробовал подход OpacityMask. В основном это должно выглядеть примерно так:
<Rectangle Fill="Red">
<Rectangle.OpacityMask>
<ImageBrush ImageSource="MyImage.png"/>
</Rectangle.OpacityMask>
</Rectangle>
изменив свойство заливки прямоугольника, вы получите другое цветное изображение.
Ответ 2
Сколько элементов управления имеет пользователь по цвету?
Если они выбирают из ограниченного набора (например, красного, зеленого, синего, черного, коричневого), то самым простым способом было бы привязать источник изображения к переменной, которая содержит имя изображения, а затем изменить имя сохраняется в этой переменной.
Если они могут выбрать любой цвет, то вам нужно сделать некоторую обработку изображения, чтобы изменить черные пиксели опорного изображения выбранного цвета, пишет, что в изолированное хранилище, а затем связать источник изображения для этого нового файла.Р >
Другой альтернативой является нарисовать кнопку в XAML, а затем вы можете напрямую управлять цветом переднего плана. Эта страница MSDN описывает основы рисования. Вы можете использовать те же команды для определения изображения на кнопке, как описано в этой странице из блога Скотта Гуга:
![image of code from blog]()
(это образ кода из блога).
Если вы привязываете цвет к переменной, пользователь может изменить цвет изображения. Он полагается на то, что вы можете рисовать изображение в XAML, хотя.