quinta-feira, 8 de setembro de 2011

Converter cores de VB para Word e vice-versa

Quem trabalha com aplicações para edição de documentos Word pode ter se percebido que o sistema de codificação numérica de cores do VB e do Word são diferentes. Por exemplo, o código númerico para preto em VB é -16777216 e em Word é 0.

A função a seguir converte a cor de um sistema para o outro:

Public Function ConverterCor(ByVal int As Integer) As Integer
      Dim
R, G, B As Integer
      If
int >= 0 Then 'Word
            If int <= 255 Then
                 
B = 0
                  G = 0
                  R = int
            ElseIf int <= 65535 And int > 255 Then
                 
B = 0
                  G = int \ 256
                  R = int - 256 * G
            ElseIf int > 65535 Then
                 
B = int \ 65536
                  G = (int - 65536 * B) \ 256
                  R = int - 65536 * B - 256 * G
            End If
           
ConverterCor = 65536 * R + 256 * G + B - 16777216
      Else 'VB
            If int <= -16776961 Then
                 
R = 0
                  G = 0
                  B = int + 16777216
            ElseIf int > -16776961 And int <= -16711681 Then
                 
R = 0
                  G = (int + 16777216) \ 256
                  B = int + 16777216 - 256 * G
            ElseIf int > -16711681 Then
                 
R = (int + 16777216) \ 65536
                  G = (int + 16777216 - 65536 * R) \ 256
                  B = int + 16777216 - 65536 * R - 256 * G
            End If
           
ConverterCor = R + 256 * G + 65536 * B
      End If
End Function

Esta função reconhece qual o sistema que foi inserido e retorna o outro.

A seguir exemplos para de aplicação desta função:

WordDoc.Paragraph.Font.Color = ConverterCor(TextBox1.ForeColor.toArgb)
TexBox1.ForeColor =
Color.FromArgb(ConverterCor(WordDoc.Paragraph.Font.Color))

Este não foi simples não. Deu muito trabalho para descobrir as codificações.

Nenhum comentário:

Postar um comentário