Detectar color de un pixel
Necesito detectar el color de un determinado pixel q esta en la pantalla , es decir necesito q el mouse se mueva a determinada coordenada y capture el color del pixel sobre el q queda como puedo capturar el color de un pixel??????
puedes saber el color de un punto de la pantalla con POINT (X,Y)
No sé si eso te resolverá el problema.
No sé si eso te resolverá el problema.
Como te devuelve el color???? porque pongo
Hola = Point(45, 23)
MsgBox Hola
Y lo q me muestra es el numero 11061408
como se q color es ese?
Hola = Point(45, 23)
MsgBox Hola
Y lo q me muestra es el numero 11061408
como se q color es ese?
POINT te devuelve el color de ese pixel de la pantalla, por supuesto haciendo referencia a un control form o picture.
Pon un picture con una foto o cualquier dibujo, este código y mueve el ratón sobre dicha foto. Verás el valor del color en el caption del formulario.
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Color As Long
Dim Color1, Color2, Color3 As Integer
Color = Picture1.Point(X, Y)
Color1 = Int(Color / 65536)
Color = Color Mod 65536
Color2 = Int(Color / 256)
Color = Color Mod 256
Color3 = Color
Caption = "Rojo: " & Color3 & " - Verde: " & Color2 & " - Azul: " & Color1
End Sub
Saludos
Pon un picture con una foto o cualquier dibujo, este código y mueve el ratón sobre dicha foto. Verás el valor del color en el caption del formulario.
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Color As Long
Dim Color1, Color2, Color3 As Integer
Color = Picture1.Point(X, Y)
Color1 = Int(Color / 65536)
Color = Color Mod 65536
Color2 = Int(Color / 256)
Color = Color Mod 256
Color3 = Color
Caption = "Rojo: " & Color3 & " - Verde: " & Color2 & " - Azul: " & Color1
End Sub
Saludos
Y si necesito ver el color de un pixel q no esta dentro del formulario sino q esta en otra ventana como podria hacer?
SabÃa que lo preguntarÃas ;-)
Abre un proyecto nuevo, y ponle simplemente un timer y un textbox no demasiado pequeño (que quepan 20 caracteres). El formulario haz que sea tan pequeño como puedas (para que te permita ver el resto de la pantalla).
en el código del formulario pones:
Dim z As POINTAPI
Private Sub Form_Load()
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
Dim Color As Long
Dim Color1, Color2, Color3 As Integer
GetCursorPos z
screendc = CreateDC("DISPLAY", "", "", 0&)
Color = GetPixel(screendc, z.x, z.y)
'Picture1.BackColor = GetPixel(screendc, z.x, z.y)
DeleteDC (screendc)
Color1 = Int(Color / 65536)
Color = Color Mod 65536
Color2 = Int(Color / 256)
Color = Color Mod 256
Color3 = Color
Text1 = "Rojo: " & Color3 & " - Verde: " & Color2 & " - Azul: " & Color1
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim Color As Long
Dim Color1, Color2, Color3 As Integer
Color = Picture1.Point(x, y)
Color1 = Int(Color / 65536)
Color = Color Mod 65536
Color2 = Int(Color / 256)
Color = Color Mod 256
Color3 = Color
Caption = "Rojo: " & Color3 & " - Verde: " & Color2 & " - Azul: " & Color1
End Sub
Y ahora agregas un módulo y le pones el siguiente código:
Declare Function CreateDC& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, _
ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As Any)
Declare Function DeleteDC& Lib "gdi32" (ByVal hdc As Long)
Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, _
ByVal y As Long) As Long
Type POINTAPI
x As Long
y As Long
End Type
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Ejecuta el programa, y cambia de pantalla (mininiza el visua basic, por ejemplo) y haz una excursión por tu escritorio, verás los valores de cada pixel de la pantalla.
Saludos.
Abre un proyecto nuevo, y ponle simplemente un timer y un textbox no demasiado pequeño (que quepan 20 caracteres). El formulario haz que sea tan pequeño como puedas (para que te permita ver el resto de la pantalla).
en el código del formulario pones:
Dim z As POINTAPI
Private Sub Form_Load()
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
Dim Color As Long
Dim Color1, Color2, Color3 As Integer
GetCursorPos z
screendc = CreateDC("DISPLAY", "", "", 0&)
Color = GetPixel(screendc, z.x, z.y)
'Picture1.BackColor = GetPixel(screendc, z.x, z.y)
DeleteDC (screendc)
Color1 = Int(Color / 65536)
Color = Color Mod 65536
Color2 = Int(Color / 256)
Color = Color Mod 256
Color3 = Color
Text1 = "Rojo: " & Color3 & " - Verde: " & Color2 & " - Azul: " & Color1
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim Color As Long
Dim Color1, Color2, Color3 As Integer
Color = Picture1.Point(x, y)
Color1 = Int(Color / 65536)
Color = Color Mod 65536
Color2 = Int(Color / 256)
Color = Color Mod 256
Color3 = Color
Caption = "Rojo: " & Color3 & " - Verde: " & Color2 & " - Azul: " & Color1
End Sub
Y ahora agregas un módulo y le pones el siguiente código:
Declare Function CreateDC& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, _
ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As Any)
Declare Function DeleteDC& Lib "gdi32" (ByVal hdc As Long)
Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, _
ByVal y As Long) As Long
Type POINTAPI
x As Long
y As Long
End Type
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Ejecuta el programa, y cambia de pantalla (mininiza el visua basic, por ejemplo) y haz una excursión por tu escritorio, verás los valores de cada pixel de la pantalla.
Saludos.
Sabes lo que me gustarÃa? que si haces algo interesante con esas ideas, pues que lo expongas aquÃ. Por ejemplo una lupa (es lo que yo he hecho).
Saludos
Saludos
lo q pasa es q no creo q les interese lo q voy a hacer , es decir , esto lo necesito para un juego online.
Es un juego donde hay q estar siempre horas y horas tirando dados para sacar unos atributos mas o menos buenos (maximo 18) , entonces con esto queria detectar los pixeles en blanco del 18 y q automaticamente tire loa dados hasta q toque un 18
Es un juego donde hay q estar siempre horas y horas tirando dados para sacar unos atributos mas o menos buenos (maximo 18) , entonces con esto queria detectar los pixeles en blanco del 18 y q automaticamente tire loa dados hasta q toque un 18
Jajajaj, tramposo !
Bueno, cada uno que lo aplique donde lo necesite.
Un saludo y suerte con el programa
P.D.: lo de tramposo es broma.
Bueno, cada uno que lo aplique donde lo necesite.
Un saludo y suerte con el programa
P.D.: lo de tramposo es broma.
Una consulta como podria hacer lo mismo, es decir capturar el color de un pixel, pero no con el mouse sino colocando yo las coordenadas....y seria sobre cualquier punto de la pantalla...me podrias dar un ejemplo...gracias