2010-10-16 25 views
11

Tengo un botón de alternar con un png que tiene un fondo transparente y un primer plano negro. Si el botón está seleccionado, entonces quiero que el color negro de la imagen cambie a un color elegido por el usuario. ¿Hay alguna manera de hacer esto en Silverlight y/o wp7?¿Cómo puedo cambiar el color de una imagen en Silverlight/WP7 (máscara de color)?

Así, por ejemplo:

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

MyImage.png tiene un fondo transparente y un primer plano negro. El color preferido del usuario es rojo. Cuando se activa el botón, quiero que el primer plano negro de la imagen se vuelva rojo.

+0

muestra algún código. –

Respuesta

22

Me gustaría probar el enfoque OpacityMask. Básicamente debe ser algo como esto:

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

cambiando la propiedad de llenado del rectángulo que se obtendría diferente imagen coloreada.

+1

¡¡¡Impresionante !!! Eso funcionó por completo. Tendré que encontrar la manera de incorporarlo a mi solución, ¡pero muchas gracias! – Micah

+0

¡Esto funciona! También vale la pena señalar que puede agregar 'Stretch =" None "' al 'ImageBrush' para que la imagen ocupe el tamaño de su rectángulo, de lo contrario, parece que se muestra a tamaño completo. –

0

¿Cuánto control tiene el usuario sobre el color?

Si seleccionan de un conjunto limitado (por ejemplo, rojo, verde, azul, negro, marrón), lo más simple sería vincular la fuente de la imagen a una variable que contenga el nombre de la imagen y luego cambiar qué nombre se mantiene en esa variable.

Si pueden elegir cualquier color, debe realizar un procesamiento de imagen para cambiar los píxeles negros de una imagen de referencia al color seleccionado, escribirlos en el almacenamiento aislado y vincular el origen de la imagen a ese nuevo archivo.

Otra alternativa es dibujar el botón en XAML y luego puede tener control directo sobre el color de primer plano. This MSDN page describe los conceptos básicos del dibujo. Se pueden utilizar los mismos comandos para definir la imagen de un botón, como se describe en this page del blog de Scott Gu:

image of code from blog

(esta es la imagen del código del blog).

Si vincula el color a una variable, el usuario puede cambiar el color de la imagen. Sin embargo, confía en que puedas dibujar la imagen en XAML.

+0

Eso es lo que esperaba evitar, pero es posible que no tenga otras opciones. – Micah

+0

@Micah - Acabo de pensar en otra cosa - actualizando la respuesta. – ChrisF

+0

No es una mala idea. Podría intentar eso. Estoy usando los iconos en el SDK WP7. Quizás pueda convertir el archivo vectorial a xaml. – Micah

Cuestiones relacionadas