Almacenar colores en una base de datos

En ocasiones puedes necesitar almacenar la definición de uno o varios colores en alguna tabla en tu base de datos. La forma más fácil y rápida para ello es guardar el color en formato HTML, como una simple cadena de texto.

Con estas sencillas funciones podrás convertir una cadena en formato de color Html en un color que luego puedes aplicar a otros controles y viceversa, es decir, podrás convertir un color en una cadena en formato de color Html.

También incluimos una pequeña verificación para saber que el color recibido en formato Html está bien creado.

A continuación el código de las tres funciones:

        /// <summary>

        /// Comprueba si el código recibido es un código de color Html válido

        /// </summary>

        /// <param name=”ColorCode“>Código de color</param>

        /// <returns>True o False en función de si es un código html de color o no</returns>

        public static bool IsColor (string ColorCode)

        {

            return(new Regex(“#[a-f0-9|A-F0-9]{6}”).IsMatch(ColorCode));

        }

 

        /// <summary>

        /// Convierte un color en un código de color Html

        /// </summary>

        /// <param name=”color“>Color a convertir</param>

        /// <returns></returns>

        public static string ColorToString (Color color)

        {

            try

            {

                return ColorTranslator.ToHtml(color);

            }

            catch (Exception e)

            {

                MessageBox.Show(“Error:” + Environment.NewLine + e.Message, “ColorToString”,

                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                return null;

            }

        }

 

        /// <summary>

        /// Convierte una cadena de código de color Html en un color

        /// </summary>

        /// <param name=”HtmlCode“>Código Html a convertir</param>

        /// <param name=”color“>Por referencia: Color obtenido a partir del código Html</param>

        /// <returns>True si tiene éxito la conversión o False si se producen errores</returns>

        public static bool StringToColor (string HtmlCode, ref Color color)

        {

            try

            {

                if (IsColor(HtmlCode))

                {

                    color = ColorTranslator.FromHtml(HtmlCode);

                    return true;

                }

                else

                {

                    return false;

                }

            }

            catch (Exception e)

            {

                MessageBox.Show(“Error:” + Environment.NewLine+ e.Message, “ColorToString”,

                                 MessageBoxButtons.OK, MessageBoxIcon.Error);

                return false;

            }

        }

Para ponerlo a prueba puedes crearte un formulario parecido al siguiente:

A continuación el código para los eventos de los controles

        private void button1_Click(object sender, EventArgs e)

        {

            Color color = new Color();

            if (MyClase.StringToColor(this.txtHtmlColor.Text, ref color))

            {

                this.lblColorConverted.BackColor = color;

            }

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            ColorDialog clg = new ColorDialog();

            if (clg.ShowDialog() == DialogResult.OK)

            {

                this.lblSelectColor.BackColor = clg.Color;

                this.lblColorHtml.Text = MyClase.ColorToString(clg.Color);

            }

        }

Si todo ha ido bien deberías obtener un resultado parecido al siguiente:

Ponlo a prueba, piensa en cómo mejorarlo y comparte con nosotros tus progresos.

 

 

¿Te gustaría aprender a programar en .NET sobre AutoCAD?

Si te inscribes recibirás un cupón de descuento adicional con el que el coste del curso quedará reducido al 50%. También tendrás opción a recibir soporte técnico en programación sobre AutoCAD o Bricscad por correo electrónico sin coste.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Información básica sobre protección de datos Ver más

  • Responsable: MTB Software de Ponent, SLU.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinet, SL que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Ir arriba
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver Política de cookies
Privacidad