2010-11-29 8 views
8

Duplicar posible:
Change custom color for Rectangle.Fill or Grid.BackgroundWindows Phone 7: establece dinámicamente el color de fondo del botón de Hex?

Estoy tratando de establecer dinámicamente un color de fondo de botón Hex en Windows Phone 7.

SolidColorBrush myBrush = new SolidColorBrush(); 
    myBrush.Color = ColorTranslator.FromHtml("#123456"); 
    pbMood.Background = myBrush; 

ColorTranslator parece no ser disponible. Esa línea da un error de compilación que no se encuentra.

¿Estoy buscando en el lugar equivocado (un espacio de nombres diferente?), O ¿hay alguna otra forma de hacerlo desde el código?

+0

Gracias por preguntar esto. Necesitaré esta información en breve. – Cyberherbalist

Respuesta

23

Esta clase no está disponible en Silverlight.

Instead, you can write it yourself.

public static SolidColorBrush GetColorFromHexa(string hexaColor) 
{ 
    return new SolidColorBrush(
     Color.FromArgb(
      Convert.ToByte(hexaColor.Substring(1, 2), 16), 
      Convert.ToByte(hexaColor.Substring(3, 2), 16), 
      Convert.ToByte(hexaColor.Substring(5, 2), 16), 
      Convert.ToByte(hexaColor.Substring(7, 2), 16) 
     ) 
    ); 
} 
+0

Awesome answer. ¡Perfecto! – pearcewg

+0

U Rock !!!!!!!! – Cyberherbalist

+0

Debe utilizar Color.FromArgb ( Convert.ToByte (hexaColor.Substring (0, 2), 16), Convert.ToByte (hexaColor.Substring (2, 2), 16), Convert.ToByte (HEXACOLOR .Substring (4, 2), 16), Convert.ToByte (hexaColor.Substring (6, 2), 16) – jcrada

3

Este StackOverflow answer da una forma aún más fácil de usar valores hexadecimales para crear un SolidColorBrush.

Brush brush = new SolidColorBrush(new Color() { R = 0xFF, G = 0xA6, B = 0x10}); 
+0

Este es el [Inicializador de objetos] (http://msdn.microsoft.com/en-us/library /bb397680.aspx). Está disponible en Windows Phone y yo mismo lo uso. Además, las clases de Windows Phone en este caso son System.Windows.Media.Color y System. .Windows.Media.SolidColorBrush. Windows Phone no utiliza [System.Drawing] (http://stackoverflow.com/questions/10021262/cannot-find-system-drawing-dll-in-reference) que es para GDI + en el escritorio de Windows. – AffluentOwl

+0

Pensé erróneamente que el OP estaba preguntando por 'System.Drawing.Color', que es inmutable. – SLaks

+2

scrl.Background = new SolidColorBrush (nuevo Color() {A = Convert.ToByte (255 * .7), R = 0X32, G = 0x40, B = 0x65}); funciona con el teléfono con Windows 8 – Dev