none
Convertir un color de HEX a RGB RRS feed

  • Debate general

  • Hola comunidad.

    Quiero proporcionar un poco de codigo que a mi, personalmente, me ha costado entontrar informacion en internet para ASP con C#, y bueno puede usarse en VB tambien.

    En internet hay muchas paginas en las que si le pides un color en RGB te dan su igual en HEX y viceversa, pero cuando lo que necesitas es, cambiar de HEX a RGB para poder aplicar un color dinamicamente en una web, no encontre nada, asi que me lo curre un poco y aqui esta el resultado. 

    Animo a todos a discutirlo y mejorarlo si se puede, que siempre se puede, SEGURO.

    El metodo en C#:

        protected System.Drawing.Color colorFondo(string color)
        {
            System.Drawing.Color resultado = new System.Drawing.Color();
    
            if (color.IndexOf("#") != -1)
                color = color.Replace("#", "");
    
            int R = int.Parse(color.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
            int G = int.Parse(color.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
            int B = int.Parse(color.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
    
            return resultado = System.Drawing.Color.FromArgb(R, G, B);
        }

    El metodo en VB (este no lo he probado porque no he tenido tiempo, pero deberia de funcionar igual):

    Protected Function colorFondo(ByVal color As String) As System.Drawing.Color
            Dim resultado As System.Drawing.Color = New System.Drawing.Color
            If (color.IndexOf("#") <> -1) Then
                color = color.Replace("#", "")
            End If
            
            Dim R As Integer = Integer.Parse(color.Substring(0, 2), System.Globalization.NumberStyles.HexNumber)
            Dim G As Integer = Integer.Parse(color.Substring(2, 2), System.Globalization.NumberStyles.HexNumber)
            Dim B As Integer = Integer.Parse(color.Substring(4, 2), System.Globalization.NumberStyles.HexNumber)
            Return
        End Function

    Comentarios del codigo:

    1. Primero se recibe un texto con el HEX del color, pudiento tener el # o no.
    2. Se crea una varaible para almacenar el color.
    3. Se comprueba si tiene o no # para eliminarlo si existe.
    4. Se va fragmentando el string recibido de 2 en 2 cifras y obteniendo su numero HEX para almacenarlo en la variable que corresponde a cada color RGB.
    5. Se asigna a la variable el color y se devuelve el resultado.

    Cuando utilizo el int.Parse habreis notado la utilizacion del parametro System.Globalization.NumberStyles.HexNumber, esto es para que devuelba siemrpe un valor numeroco correspondiente a los caracteres no numericos que pueda encontrar en el string que estamos troceando de 2 en 2 caqracteres.

    Y bueno, esta es mi contribucion, espero que les sea de ayuda, y si habia alguna forma mejor, mas facil, y mas rapida, compartanla.


    DrUalcman




    jueves, 8 de octubre de 2015 4:23

Todas las respuestas

  • Hola Sergi,

    podrías utilizar el método FromHtml de ColorTranslator:

            protected Color ColorFondo(string color)
            {
                return ColorTranslator.FromHtml(color);
            }


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    jueves, 8 de octubre de 2015 4:30
  • GUAU!!!! ves como habia algo mas rapido, facil y simple!!! Mira que perdi cerca de 1 hora en internet y no encontre informacion sobre esa clase.

    Pero lo he probado y al pasar el string FAD6DA da error, hay que asegurarse de que el color en HEX contenga el #.

    Una grandisima aportacion. Gracias amigo.


    DrUalcman


    jueves, 8 de octubre de 2015 4:41