Visual Basic - Picturebox

Life is soft - evento anual de software empresarial
 
Vista:

Picturebox

Publicado por Agustin (49 intervenciones) el 18/07/2003 05:09:29
Hola quiero saber como se puede hacer para saber el color de un determinado pixel en VB.. por ejemplo yo cargo una imagen .bmp en un picturebox y quiero saber el color que tiene en las cordenadas X = 1556 Y = 1544 (un ejemplo cualquiera, en este caso x y son del picture box con la imagen ya cargada)
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Picturebox

Publicado por edu (423 intervenciones) el 18/07/2003 14:34:04
Tienes que usar una funcion APi llamada GetPixel, su uso la puedes conseguir en un manual de las API que se encuentra en esta pagina en la seccion de manuales de VB.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Picturebox

Publicado por J.Fernando (47 intervenciones) el 18/07/2003 19:58:03
La respuesta que te da Edu es correcta. Sin embargo debes tener en cuenta cambiar la propiedad ScaleMode del Picture a 3 (Pixel), de Lo contrario GetPixel no funcionara correctamente.
Aqui te mando el ejemplo

Option Explicit
Private Declare Function GetPixel Lib "gdi32" _
(ByVal hdc As Long, ByVal X As Long, ByVal Y As _
Long) As Long
Dim BytRed As Byte, BytBlue As Byte, BytGreen As Byte
Dim LonColorCode As Long

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
LonColorCode = GetPixel(Picture1.hDc, X, Y)
BytRed = ExtractR(LonColorCode)
BytGreen = ExtractG(LonColorCode)
BytBlue = ExtractB(LonColorCode)
Picture1.ToolTipText = BytRed & " " & BytGreen & " " & BytBlue
End Sub
Private Function ExtractR(ByVal LonCurrentColor As Long) As Byte
On Error Resume Next
ExtractR = LonCurrentColor Mod 256
End Function

Private Function ExtractG(ByVal LonCurrentColor As Long) As Byte
On Error Resume Next
ExtractG = (LonCurrentColor \ 256) And 255
End Function

Private Function ExtractB(ByVal LonCurrentColor As Long) As Byte
On Error Resume Next
ExtractB = (LonCurrentColor \ 65536) And 255
End Function

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar