valor del pixel??? v/s RGB ni idea plase help!!!!

elhabal
01 de Febrero del 2005
Hola, tengo una gran duda, al leer el color de un pixel con la funcion getpixel o de la forma Picture.Point(x, y) me devuelve el valor del color con una largo en caracteres de 7 a 8 caracteres, mi pregunta es de donde o bajo que formato da ese valor por que tomar por RGB no me cuadra ya que en RGB serian 3 valores distintos entre 0-255, ¿será el resultado de un calculo? corriganme y/o expliquenme por favor. Gracias

en?
01 de Febrero del 2005
yo uso esto:

Private Type TypeColor
Rojo As Long
Verde As Long
Azul As Long
End Type

Private Sub VerRGB(ByVal Color As Long, EstructuraColor As TypeColor)
With EstructuraColor
.Rojo = Color And &HFF&
.Verde = (Color And &HFF00&) 256
.Azul = (Color And &HFF0000) 65536
End With
End Sub

Puedes llamarlo por ejemplo desde el evento _MouseMove del PictureBox:

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim tColor As TypeColor

[...]
Call VerRGB(Picture1.Point(X, Y), tColor)
[...]
End Sub

De esta forma ya tienes los colores separados en la estructura tColor.

__
Un saludo.

kipied
01 de Febrero del 2005
El sistema RGB es capaz de crear más 16 millones de colores (16.77.215). Al pedirle el valor del pixel te stá devolviendo el valor de la combinación, no te devuelve los tres valores por separado. Ahora bien, lo que tienes que hacer es transformarlo el valor a hexadecimal, lo que te dara una cádena de 6 dígitos, los dos primeros son el valor hexadecimal de azul , los dos siguientes de verde y los dos últimos de rojo. Estos valores están en sistema hexadecimal, por lo que necesitas llevarlo a decimal con la funcíón Val y anteponiendo a la cadena "&H".
Por ejemplo:

Dim hexpixel
Dim valorazul
Dim valorverde
Dim valorrojo

Me.ForeColor = RGB(85, 148, 255)

hexpixel = Hex(Me.ForeColor)

valorazul = Val("&H" & Left(hexpixel, 2))
valorverde = Val("&H" & Mid(hexpixel, 3, 2))
valorrojo = Val("&H" & Right(hexpixel, 2))

MsgBox "Azul=" & valorazul & " Verde=" & valorverde & " Rojo=" & valorrojo