2010-06-18 32 views
15

Estoy tratando de agregar color en el código C#, con el siguiente código de color, por ejemplo.Establecer el color a través del código de color en C#

ListTreeView.Background = new SolidColorBrush (Colors.White);

Esta es working..but Quiero añadir este color como código de color, así que estoy agregar como

System.Windows.Media

Podría alguien darme un ejemplo con

System.Drawing

Así que lo que puede hacer lo siguiente:

ListTreeView.Background = ColorTranslator.FromHtml ("# FFE7EFF2");

Esto me da error; ¿Algunas ideas?

+1

¿cuál es el error? –

+0

¿Es esto WinForms o WPF? –

+0

¿Es ese código correcto? Como @ ho1 dice 'ColorTranslator.FromHtml ("# E7EFF2") 'funcionará para un valor hexadecimal RGB, pero tiene una cadena de 8 dígitos. ¿Tienes el valor alfa allí también? – Keith

Respuesta

21

No hay una manera fácil de obtener el color con alfa incluido a partir de una cadena hexadecimal de esta manera.

Creo que tu respuesta depende de dónde obtienes los valores de color y alfa.

El color RGB el único que puede ser analizado desde una cadena hexadecimal HTML:

Color colour = ColorTranslator.FromHtml("#E7EFF2"); 

Si usted tiene un valor alfa separada que puede entonces aplicar este (docs):

Color colour = ColorTranslator.FromHtml("#E7EFF2"); 
Color transparent = Color.FromArgb(128, colour); 

Alternativamente puede necesita analizar la cadena y dividirla para convertir los pares hexadecimales en valores enteros.

PS excusa la ortografía Inglés, pero el color debería tener una 'u' en ella :)

+4

¿tienes un problema? – kenny

+0

color con "u" es englih inglés, color sin es inglés americano ... –

+0

así que es armadura/armadura, defensa/defensa, gris/gris, etc. el punto se traspasa tho. pero me pregunto, ya que wpf tiene su propia función "fromArgb" pero de alguna manera no usa la configuración alfa correcta? por qué – ThrowingDwarf

2

Creo que podría usar System.Drawing.ColorTranslator.FromHtml.

+0

Esta no es la forma correcta de hacerlo si quiere (A) valores RGB, que aparentemente es lo que busca. 'FromHtml' lanzará una excepción si usa cualquier cosa que no sea un color HTML. –

+0

@John: Lo siento, no sé de lo que estás hablando. 'Color c = System.Drawing.ColorTranslator.FromHtml (" # FFE7EFF2 ")' funciona bien y si hago 'button1.BackColor = c;' hará que el botón tenga un color azulado. ¿Estás diciendo que es el color equivocado? –

+0

@ ho1: Cuando uso "# FFE7EFF2" con ColorTranslator, es exactamente del mismo color que "# 00E7EFF2" (que debería ser invisible ya que el canal alfa es cero, ¿verdad?). –

7

ListTreeView no es un estándar Control proporcionado por el marco, por lo que deberá consultar su documentación. En general, sin embargo, puede usar System.Drawing.ColorTranslator.FromHtml o System.Drawing.Color.FromArgb. He aquí cómo usted lo haría con un TreeView:

TreeView t = ... 
t.BackgroundColor = Color.FromArgb(0xff00ff00); // Fully opaque, 100% green. 
// or: 
t.BackgroundColor = ColorTranslator.FromHtml("green"); 
+0

No creo que haya una sobrecarga 'FromArgb' que tenga una cadena hexadecimal ¿verdad? – Keith

+0

Er, lo siento, se supone que es solo un entero hexadecimal. Mi error. –

Cuestiones relacionadas