Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problema con GetPixel

Estas en el tema de Problema con GetPixel en el foro de Visual Basic clásico en Foros del Web. Cuando uso GetPixel siempre devuelve "-1". ¿Qué es lo que estoy haciendo mal? Este es el código: Cita: Private Declare Function GetPixel Lib "gdi32" (ByVal ...
  #1 (permalink)  
Antiguo 16/06/2005, 18:01
 
Fecha de Ingreso: junio-2005
Mensajes: 37
Antigüedad: 18 años, 10 meses
Puntos: 0
Problema con GetPixel

Cuando uso GetPixel siempre devuelve "-1". ¿Qué es lo que estoy haciendo mal?
Este es el código:
Cita:
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Print GetPixel(hdc, x, y)
End Sub
Gracias!
  #2 (permalink)  
Antiguo 17/06/2005, 08:32
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
pero de que deseas obtenes el pixel, de la pantalla, del form, de un picture..

eso es lo que te falta..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 17/06/2005, 17:39
 
Fecha de Ingreso: junio-2005
Mensajes: 37
Antigüedad: 18 años, 10 meses
Puntos: 0
Poniéndo así: Print GetPixel(form1.hdc(o picture1.hdc), x, y) - también me pasa lo mismo :S
  #4 (permalink)  
Antiguo 18/06/2005, 10:53
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
La API usa como unidades pixeles. VB devuelve en el evento MouseDown Twips. Obviamente, al pasarle estos valores, la coordenada que estás indicando, queda fuera del área del DC especificado y por lo tanto devuelve -1.
Lo que debes hacer, es cambiar la escala de tu formulario a vbPixels, en el evento Load, o convertir las unidades en el evento MouseDown con las funciones ScaleX y ScaleY.

Última edición por Beakdan; 20/06/2005 a las 07:49
  #5 (permalink)  
Antiguo 18/06/2005, 17:47
 
Fecha de Ingreso: junio-2005
Mensajes: 37
Antigüedad: 18 años, 10 meses
Puntos: 0
Voy a probar con eso. Muchas gracias
  #6 (permalink)  
Antiguo 21/06/2005, 12:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Cita:
Iniciado por Beakdan
La API usa como unidades pixeles. VB devuelve en el evento MouseDown Twips. Obviamente, al pasarle estos valores, la coordenada que estás indicando, queda fuera del área del DC especificado y por lo tanto devuelve -1.
Lo que debes hacer, es cambiar la escala de tu formulario a vbPixels, en el evento Load, o convertir las unidades en el evento MouseDown con las funciones ScaleX y ScaleY.
Bueno, también podrías hacerlo asi:
X / Screen.TwipsPerPixelX
Y / Screen.TwipsPerPixelY
a la hora de pasar a la funcion

ok....
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:51.