Visual Basic - Busqueda de un punto en un picture

Life is soft - evento anual de software empresarial
 
Vista:

Busqueda de un punto en un picture

Publicado por danibc (41 intervenciones) el 03/04/2002 02:56:17
Desde un picturebox tengo una imagen con fondo blanco y un punto negro que puede estar en cualquier parte de la imagen(resolución 640x480).
Con dos bucles For, hago que busque este punto para que me diga las
coordenadas pero la verdad es que es muy lento (al menos 10 segundos) aunque ponga en los For step 10.

For x = 1 To Picture1(0).Width Step 5
For y = 1 To Picture1(0).Height Step 5
PuntoNegro = Picture1(0).Point(x, y)
........

Alguien conoce otro método más eficaz para realizar esta busqueda más rápida.

Desde ya, 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:Busqueda de un punto en un picture

Publicado por Javier Pérez (170 intervenciones) el 03/04/2002 11:40:59
La verdad es que ese método es muy poco efectivo. Cada vez que efectúas una llamada al método Point, VB tiene que aobtener un "handle" al bitmap, a partir del cual obtiene un "handle" a la memoria que contiene la definición de los puntos, a partir del cual se leen los bytes que contienen el color del pixel solicitado y convertirlo al formato adecuado. En fin, un rollo.

Comohaber, si hay un método más efectivo (mucho más efectivo), aunque más complicado. Mediante el API de Windows es posible hacer una copia de los bits del bitmap a un array de VB (por medio de la función GetDIBits, por ejemplo). Examinando este vector y conociendo la estructura interna del bitmap es posible localizar un grupo de bits que correspondan al color solicitado y obtener sus coordenadas a partir de la posición que ocupan en el vector. ¿Te animas?
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:Probaré haber que tal...

Publicado por danibc (41 intervenciones) el 04/04/2002 00:23:42
Gracias por la ayuda, ahora solo queda probarlo

Un saludo
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