Caros colegas, alguem sabe como fazer o calculo inverso rgb?
Eu tenho apenas o codigo da cor ja calculado que é 13947080, preciso saber qual foi o rgb que chegou neste numero, esta cor é bem proximo do palha do windows, algo proximo de rgb(192,192,192).
---
Nota da Moderação (Maligno):
O presente tópico foi movido da seção "Outras Bibliotecas Visuais e IDEs", uma vez que seu conteúdo diverge dos objetivos daquela seção.
Calculo rgb()
Moderador: Moderadores
-
TerraSoftware
- Usuário Nível 3

- Mensagens: 353
- Registrado em: 28 Jul 2004 13:14
- Localização: Cianorte-PR
- Contato:
Re: Calculo rgb()
Nunca precisei desse tipo de cálculo, mas sou levado a crer que não há cálculo nenhum, mas uma diferença de representação. O valor 13947080 é decimal. Em hexa: D4D0C8; três bytes que representam o RGB. Não é isso?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Calculo rgb()
TerraSoftware, o valor do RGB da cor 13947080 é:
R = 200 G = 208 B = 212
Bom, para conseguir estes valores eu montei um pequeno programinha, veja abaixo:
Este código acima tem que ser compilado com HwGui.
Para ver a combinação RGB da cor, basta executar o exemplo acima e escolher a opção "Informar Cor". Depois digite o código da cor (13947080) no campo e clique no botão "Ver Cor". Vai aparecer uma paleta de cores, clique então em "Definir cores personalizadas" para ver os valores para RGB.
Agora, se você escolher alguma outra cor na paleta e clicar no botão Ok, será retornado o código da cor.
Abraços,
R = 200 G = 208 B = 212
Bom, para conseguir estes valores eu montei um pequeno programinha, veja abaixo:
Código: Selecionar todos
#include "windows.ch"
#include "guilib.ch"
Function Main
Private oWindowInicial
INIT WINDOW oWindowInicial MAIN TITLE "Verificar Cor" ;
AT 200,200 SIZE 400,150
MENU OF oWindowInicial
MENUITEM "&Informar Cor" ACTION VerCor()
MENUITEM "&Sair" ACTION EndWindow()
ENDMENU
ACTIVATE WINDOW oWindowInicial
Return Nil
Function VerCor()
Local oWndCor
Private nColor:=13947080
INIT DIALOG oWndCor CLIPPER NOEXIT TITLE "Verificar Cor" AT 200,200 SIZE 300,150
@ 10,10 Say "Informe o Código da Cor" Size 200,22
@ 10,32 Get oGet VAR nColor Picture "99999999" Size 200,25
@ 20,100 BUTTON "Ver Cor" SIZE 100, 32 ON CLICK {||AbrePaleta(nColor)}
ACTIVATE DIALOG oWndCor
Return Nil
Function AbrePaleta(nColor)
nColor:=Hwg_ChooseColor(nColor,.F.)
if nColor!=Nil
MsgInfo(str(nColor))
endif
Return NilPara ver a combinação RGB da cor, basta executar o exemplo acima e escolher a opção "Informar Cor". Depois digite o código da cor (13947080) no campo e clique no botão "Ver Cor". Vai aparecer uma paleta de cores, clique então em "Definir cores personalizadas" para ver os valores para RGB.
Agora, se você escolher alguma outra cor na paleta e clicar no botão Ok, será retornado o código da cor.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
sambomb
- Usuário Nível 3

- Mensagens: 250
- Registrado em: 24 Out 2008 17:02
- Localização: Itaocara - RJ - Brasil
Re: Calculo rgb()
O cálculo matemático é assim:
Blue * 65536 (256*256)
+
Green * 256
+
Red
Ou seja:
212*65536 = 13893632
208*256 = 53248
200
13893632+53248+200 = 13947080
Agora pra transformar de volta já seria um algoritmo complexo, mas pode ser feito através da função que o amigo postou acima....
Blue * 65536 (256*256)
+
Green * 256
+
Red
Ou seja:
212*65536 = 13893632
208*256 = 53248
200
13893632+53248+200 = 13947080
Agora pra transformar de volta já seria um algoritmo complexo, mas pode ser feito através da função que o amigo postou acima....

Rca Sistemas - Itaocara - RJ
- Ale SB
- Usuário Nível 3

- Mensagens: 201
- Registrado em: 20 Jul 2004 17:30
- Localização: Campo Grande / MS
Re: Calculo rgb()
TerraSoftware, Amigo eu precisei agora tb desta informaçao, como tb nao achei nada ja pronto, montei uma funçao com a Formula inversa da funçao RGB.
Obs.: Sei q o Post eh antigo, talvez nem precise mais disso, de qq forma, fica ai a dica p/ + alguem q possa precisar ou soh a nivel de curiosidade mesmo.
nColor := 10899511
aCor := Int2Rgb(nColor)
? aCor[1], aCor[2], aCor[3]
@braços Ale
Obs.: Sei q o Post eh antigo, talvez nem precise mais disso, de qq forma, fica ai a dica p/ + alguem q possa precisar ou soh a nivel de curiosidade mesmo.
Código: Selecionar todos
********************************************************************************
function Int2Rgb(nIntCor)
////////////////////////////////////////////////////////////////////////////////
// Autor : Ale SB //
// Descricao : Funçao Inversa do nRGB. //
// Retorna o RGB a partir do Inteiro da Cor. //
// Parametros : //
// - nIntCor ==> Inteiro da Cor. //
// Retorno : RGB //
////////////////////////////////////////////////////////////////////////////////
********************************************************************************
local nR := nG := nB := 0
local nDiv1 := nDiv2 := 0
local nDecQuoc1 := nDecQuoc2 := 0
SET DECIMAL TO 10
nDiv1 := nIntCor / 256
nDecQuoc1 := Val(SubStr(Str(nDiv1), At(".",Str(nDiv1))))
nR := Int(nDecQuoc1*256)
nDiv2 := Int(nDiv1) / 256
nB := Int(nDiv2)
nDecQuoc2 := Val(SubStr(Str(nDiv2), At(".",Str(nDiv2))))
nG := Int(nDecQuoc2*256)
SET DECIMAL TO 2
return {nR,nG,nB}
aCor := Int2Rgb(nColor)
? aCor[1], aCor[2], aCor[3]
@braços Ale
r]