Como posso obter uma cor de um código de cores hexadecimal (por exemplo #FFDFD991
)?
Estou lendo um arquivo e obtendo um código de cores hexadecimal. Preciso criar a System.Windows.Media.Color
instância correspondente para o código de cores hexadecimal. Existe um método embutido na estrutura para fazer isso?
#FF0000
é um código de cores HTML (ou hexadecimal), não um código de hash. Por favor, aprenda a diferença.Respostas:
Suponho que seja um código ARGB ... Você está se referindo a
System.Drawing.Color
ouSystem.Windows.Media.Color
? O último é usado no WPF, por exemplo. Eu não vi ninguém mencionar ainda, então, caso você esteja procurando:fonte
Color.FromArgb
método nesse caso. Se você usar alfa ponto flutuante, você teria que multiplicar por 255.Supondo que você queira dizer os códigos RGB do tipo HTML (chamados códigos Hex, como # FFCC66), use a classe ColorTranslator :
Se, no entanto, você estiver usando um código hexadecimal ARGB, poderá usar a classe ColorConverter no espaço para nome System.Windows.Media:
fonte
Se você não quiser usar o ColorTranslator, poderá fazê-lo facilmente:
O código de cor é apenas a representação hexadecimal do valor ARGB.
EDITAR
Se você precisar usar 4 valores em vez de um único número inteiro, poderá usá-lo (combinando vários comentários):
Nota 1 : NumberStyles está em System.Globalization.
Nota 2 : forneça sua própria verificação de erro (o código de cor deve ser um valor hexadecimal de 6 ou 8 caracteres)
fonte
colorcode = colorcode.Replace("#", "")
simplesmente usarint a = byte.parse(colorcode.Substring(0,2), NumberStyles.HexNumber);
e assim por diante para r, g e b. Não se esqueça de substituir o primeiro parâmetro da Substring - o índice - por 2 para r, 4 para ge 6 para b.FromArgb
leva 1 parâmetro noSystem.Drawing.Color
e 4 paramteres emSystem.Windows.Media.Color
Há também este pequeno método de extensão simples:
Em uso:
fonte
Color
corretamente. Eu usei o código do @too e o corrigi.& 0xFF
o valor do downshifted final a cada vez, em vez de precisar de todos esses valores diferentes&
.As três variantes abaixo dão exatamente a mesma cor. O último tem o benefício de ser destacado no IDE do Visual Studio 2010 (talvez seja o ReSharper que esteja fazendo isso) com a cor adequada.
fonte
System.Windows.Media.Color
.fonte
Eu precisava converter um código de cores HEX em um System.Drawing.Color, especificamente um tom de Alice Blue como plano de fundo em um formulário WPF e achei que demorou mais tempo do que o esperado para encontrar a resposta:
-
fonte
Você pode usar o seguinte código:
fonte
Se você quiser fazer isso com um aplicativo da Windows Store, siga @Hans Kesting e a resposta @Jink:
fonte
Esta postagem tornou-se o caminho para quem tenta converter um código de cores hexadecimal para uma cor do sistema. Portanto, pensei em adicionar uma solução abrangente que lida com valores hexadecimais de 6 dígitos (RGB) e 8 dígitos (ARGB).
Por padrão, de acordo com a Microsoft, ao converter de um valor RGB para ARGB
Isso significa que, adicionando FF a um código de cores hexadecimal de 6 dígitos (RGB), ele se torna um código de cor hexadecimal ARGB de 8 dígitos. Portanto, é possível criar um método simples que lide com hexadecimais ARGB e RGB e os converta na estrutura Color apropriada.
Isso foi inspirado na resposta de Hans Kesting.
fonte
Você pode ver a elipse de conjuntos do Silverlight / WPF com cores hexadecimais para usar um valor hexadecimal:
fonte
WPF:
fonte
Color [Indigo]
Usar
fonte
int
?Se você quer dizer o HashCode como em
.GetHashCode()
, acho que você não pode voltar. As funções de hash não são bidirecionais, você pode avançar apenas, não voltar.Siga a sugestão de Oded se precisar obter a cor com base no valor hexadecimal da cor.
fonte
Eu usei o ColorDialog no meu projeto. Às vezes, o ColorDialog retorna "Red", "Fhushia" e às vezes retorna "fff000". Eu resolvi esse problema assim talvez ajude alguém.
InputColor é o valor de retorno do ColorDialog.
Obrigado a todos por responder a esta pergunta. É uma grande ajuda para mim.
fonte