C# - Converter Hexa para Cor e vice-versa


Hoje vou apresentar um singelo programa C# que converte valores Hexadecimais para Cor e vice-versa.

Hoje temos um programa feito em C# bem simples que exibe em um ListBox os nomes das cores do sistema exibindo o seu valor hexadecimal e sua respectiva cor.

Além disso podemos informar o valor hexadecimal e obter a cor.

Abaixo o formulário do projeto:

A seguir o código completo:

using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            string[] cores = Enum.GetNames(typeof(KnownColor));
            foreach (string cor in cores)
            {
                lbCores.Items.Add(cor);
            }
            lblNomeCor.Text = "";
            this.Opacity = 0.95;
         }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string str = lbCores.SelectedItem.ToString();
            Color cor = Color.FromName(str);
            txtCorHexa.Text = Cor_Para_Hexa(cor);
            txtValorHexa.Text = Cor_Para_Hexa(cor); ;
            lblCor1.BackColor = cor;
        }
        private void btnConverter_Click(object sender, EventArgs e)
        {
            try
            {
                string str = txtValorHexa.Text;
                Color cor = Hexa_Para_Cor(str);
                lblNomeCor.Text = "Nome : " + cor.Name;
                btnCor.BackColor = cor;
            }
            catch
            {
                lblNomeCor.Text = "Erro !!!";
            }
        }
        string Cor_Para_Hexa(Color c)
        {
            return ColorTranslator.ToOle(c).ToString("X");
        }
        Color Hexa_Para_Cor(string hx)
        {
            int x = int.Parse(hx, System.Globalization.NumberStyles.HexNumber);
            Color cor = ColorTranslator.FromOle(x);
            return cor;
        }
        private void btnSair_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void btnLimpar_Click(object sender, EventArgs e)
        {
            txtCorHexa.Clear();
            txtValorHexa.Clear();
        }
    }
}

Parece ser um código simples mas existem alguns detalhes que valem uma explicação como:

- A classe ColorTranslator que converte as cores em e a partir das estruturas color GDI+;
- O método FromOle(x) que converte um valor de cor OLE em uma estrutura color GDI+;

- O membro HexNumber que
indica que os estilos AllowLeadingWhite, AllowTrailingWhite e AllowHexSpecifier são usados. Esse é um estilo de número composto;
- O método Color.FromName() que cria uma estrutura Color com base no nome especificado de uma cor predefinida.

Pegue o projeto completo aqui:  Converte_Hexa_Cor.zip

(Jesus a seus discípulos) "Na verdade, na verdade vos digo que vós chorareis e vos lamentareis, e o mundo se alegrará, e vós estareis tristes, mas a vossa tristeza se converterá em alegria."
João 16:20

Veja os Destaques e novidades do SUPER DVD Visual Basic : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti