2010-10-16 12 views
11

Mam przycisk przełącznika z png, który ma przezroczyste tło i czarny pierwszy plan. Jeśli przycisk jest wybrany, chcę, aby czarny kolor obrazu zmienił się na kolor wybrany przez użytkownika. Czy istnieje sposób to zrobić w Silverlight i/lub WP7?Jak mogę zmienić kolor obrazu w silverlight/WP7 (Color Mask)?

Tak na przykład:

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

MyImage.png ma przezroczyste tło i czarny nowej wiedzy. Preferowanym kolorem użytkownika jest czerwony. Gdy przycisk jest włączony, chcę, aby czarny pierwszy plan obrazu zmienił kolor na czerwony.

+0

pokazać kod. –

Odpowiedz

22

Chciałbym spróbować podejścia OpacityMask. Zasadniczo powinien wyglądać mniej więcej tak:

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

poprzez zmianę właściwości wypełnienia prostokąta otrzymasz inny kolorowy obrazek.

+1

Awesome !!! To całkowicie działało. Muszę wymyślić, jak włączyć to do mojego rozwiązania, ale wielkie dzięki! – Micah

+0

To działa! Warto również zauważyć, że możesz dodać 'Stretch =" None "' do 'ImageBrush', aby obraz zajął rozmiar twojego prostokąta, w przeciwnym razie wydaje się on wyświetlać w pełnym rozmiarze. –

0

Ile kontroli ma użytkownik nad kolorem?

Jeśli wybierają one z ograniczonego zestawu (np. Czerwony, zielony, niebieski, czarny, brązowy), najprostszą rzeczą do zrobienia byłoby powiązanie źródła obrazu ze zmienną zawierającą nazwę obrazu, a następnie zmianę która nazwa jest trzymana w tej zmiennej.

Jeśli są w stanie wybrać dowolny kolor, należy wykonać obróbkę obrazu, aby zmienić czarne piksele obrazu referencyjnego na wybrany kolor, zapisać go w odizolowanym miejscu i powiązać źródło obrazu z nowym plikiem.

Inną alternatywą jest narysowanie przycisku w XAML, a następnie możesz mieć bezpośrednią kontrolę nad kolorem pierwszego planu. This MSDN page opisuje podstawy rysunku. Można używać tych samych poleceń, aby określić obraz na przycisku, jak opisano na this page z bloga Scott Gu:

image of code from blog

(jest to obraz kodu z bloga).

Po powiązaniu koloru ze zmienną użytkownik może zmienić kolor obrazu. Polega na tym, że możesz narysować obrazek w XAML.

+0

Tego właśnie miałem uniknąć, ale nie mam żadnych innych opcji. – Micah

+0

@Micah - Właśnie pomyślałem o czymś innym - aktualizując odpowiedź. – ChrisF

+0

Niezły pomysł. Mogę spróbować tego. Używam ikon w sdk WP7. Może mogę przekonwertować plik wektorowy na xaml. – Micah

Powiązane problemy