Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
wcostarodrigues@yahoo.com.br
Junho 2005
http://www.lizarosoft.cjb.net
Pgina 1 de 8
As especificaes para as propriedades das cores so indicadas em cdigo Hexadecimal. Cada cdigo de cor no Visual Basic formado de seis dgitos hexadecimais, de &H000000& (0) at &HFFFFFF& (16.77.215) (CORNELL, 1998). A sintaxe de uma cor hexadecimal &HBBGGRR. As cores hexadecimais so derivadas das cores RGB (ValorRed, ValorGreen, ValorBlue), que tm seus valores variando de 0 a 255. Na cor hexadecimal os dois ltimos dgitos (no considere o dgito &) retornam o vermelho, os dois dgitos centrais ou intermedirios retornam o verde e os dois primeiros (desconsidere os dgitos &H), retornam o azul, ou seja, a diferena bsica entre os dois tipos de cores est na organizao do retorno das cores e na sintaxe. Na Tabela 1, podemos ver alguns exemplos de cores no formato hexadecimal e sua respectiva correspondncia em RGB.
Tabela 1. Exemplo de algumas cores em Hexadecimal e RGB.
Descrio Retorna o mximo de vermelho Retorna o mximo de verde Retorna o mximo de azul Retorna a cor preta Retorna a cor branca (todas as cores) Retorna a cor amarela Retorna a cor cinza
Existe ainda outro padro de cores, que foi muito utilizado no QuickBasic e ainda suportado no Visual Basic e a sua sintaxe :
QBColor(ValordaCor)
Este valor um nmero inteiro ir varia de 0 a 15. As cores retornada por esta funo esto resumidas na Tabela 2. Temos que convir que est funo est obsoleta e deve ser evitada, pois retorna cores limitadas e como hoje os monitores permitem bilhes de cores, por que utiliz-la?
Tabela 2. Tabela de cores da funo QBColor.
Valor 0 1 2 3 4 5
Cor
Valor 6 7 8 9 10 11
Valor 12 13 14 15
http://www.lizarosoft.cjb.net
Pgina 2 de 8
Traduzindo Cores
Para traduzir cores no Visual Basic existem vrias formas, porm iremos abordar alguns exemplos conhecidos, utilizando a API TranslateColor da Biblioteca olepro32.dll. Esta funo converte cores Hexadecimais em cores no padro RGB (Cdigo 1)
Cdigo 1. Funo para traduzir cores Hexadecimais em RGB.
Private Declare Function TranslateColor Lib "olepro32.dll" Alias "OleTranslateColor" (ByVal clr As OLE_COLOR, ByVal palet As Long, col As Long) As Long Private Sub Form_Load() Dim RealColor As Long 'Converte cores OLE para cores RGB TranslateColor Me.BackColor, 0, RealColor 'exibe os resultados MsgBox "A cor de fundo do formulrio R=" + CStr(RealColor And &HFF&) + " G=" + CStr((RealColor And &HFF00&) / 2 ^ 8) + " B=" + CStr((RealColor And &HFF0000) / 2 ^ 16) End Sub
Como visto no Cdigo 1 possvel converter cores Hex ou reais em RGB, da mesma forma poderemos traduzir ou converter cores RGB e as constantes de cores do Visual Basic em cores hexadecimais. No Cdigo 2 veremos uma funo que possibilida esse tipo de converso.
Cdigo 2. Funo que converte as constantes de cores do Visual Basic e cores RGB em Hexadecimal.
Public Function ColorTag(ByVal Cor As Long) As String Dim Texto As String, corHexa As String Dim Num As Integer corHexa = Hex(Cor) 'Converte a cor nmerica do 'parametro em Hexadeximal 'Obs.: A funo Hex Retorna O Num em Texto Texto = "" For Num = (6 - Len(corHexa)) To 1 Step -1 Texto = Texto & "0" Next ColorTag = "&H" & Texto & corHexa 'Retorna &HBBGGRR& End Function 'Agora Pode ser Implementado Assim: Label1.Caption=ColorTag(vbblue) 'Retorna &HFF0000 'Ou usar cores RGB Label1.BackColor = ColorTag(RGB(192, 195, 192)) 'Retorna &HC0C3C0 - Cinza 'Ou usar o CommonDialog: 'Chama a caixa de dilogo de cor CommonDialog1.ShowColor Label1.Caption = ColorTag(CommonDialog1.Color)
http://www.lizarosoft.cjb.net
Pgina 3 de 8
Figura 1. Formulrio onde foi inserido um PictureBox para exemplificar o retorno de cores de uma imagem. Cdigo 3. Funo que possibilita retornar a cores em Hexadecimal de uma PictureBox com imagem atravs o evento MouseMove.
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, _ ByVal x As Long, ByVal y As Long) As Long Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, Single, y As Single) Label1.Caption = "A cor selecionada : &&H" & _ Hex(GetPixel(Picture1.hdc, x / Screen.TwipsPerPixelX, y / _ Screen.TwipsPerPixelY)) End Sub x As
Cdigo 4. Funo que possibilita retornar a cores em RGB de uma PictureBox com imagem atravs o evento MouseMove.
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) Dim RealColor As Long 'Converte cores OLE para cores RGB TranslateColor "&H" & _ Hex(GetPixel(Picture1.hdc, x / Screen.TwipsPerPixelX, y / _ Screen.TwipsPerPixelY)), 0, RealColor 'Exibe o resultado Label1.Caption = "A cor selecionada : R=" + CStr(RealColor And &HFF&) + " G=" + CStr((RealColor And &HFF00&) / 2 ^ 8) + " B=" + CStr((RealColor And &HFF0000) / 2 ^ 16) Me.Text1.BackColor = RGB(CStr(RealColor And &HFF&), CStr((RealColor And &HFF00&) / 2 ^ 8), CStr((RealColor And &HFF0000) / 2 ^ 16)) End Sub
http://www.lizarosoft.cjb.net
Pgina 4 de 8
http://www.lizarosoft.cjb.net
Pgina 5 de 8
http://www.lizarosoft.cjb.net
Pgina 6 de 8
'0&
http://www.lizarosoft.cjb.net
Pgina 7 de 8
Consideraes Finais
Esta demonstrao de poder, quando se trata de cores demonstra que o Visual Basic no uma plataforma de desenvolvimento voltada para banco de dados, podendo ser mais que isto. No Visual Basic possvel tratar imagens de forma profissional e at mesmo elaborar um programa simples para este fim. Espero que este artigo tenha ajudado a elucidar algumas questes sobre os tpicos abordados. Crticas e sugestes podero ser encaminhadas para wcostarodrigues@yahoo.com.br.
Referncias
CORNELL, G. 1998. Visual Basic 5: Completo e Total. Trad.: L.G.E. UNONIUS. So Paulo: Makron Books, 778p. KPD-TEAM, 1999. API-Guide: API library v3.7, disponvel em http://www.allapi.net/. RODRIGUES, W.C. 2005. Lizaro Visual Basic Dicas v4.0: Biblioteca de dicas do Visual Basic. No publicado.
William Costa Rodrigues Eng. Agrnomo, Ps-doutor em entomologia e programador autodidata. Desenvolve softwares em Visual Basic desde 2000, alem de atuar com Webdesigner.
http://www.lizarosoft.cjb.net
Pgina 8 de 8