elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ayuda con GetPixel (Ingresa para entender)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con GetPixel (Ingresa para entender)  (Leído 2,478 veces)
GonzaFz

Desconectado Desconectado

Mensajes: 69


Ver Perfil WWW
Ayuda con GetPixel (Ingresa para entender)
« en: 23 Mayo 2012, 23:07 pm »

Bueno resulta que ahora necesito encontrar una imagen, llamemosla "cuadro.bmp" en un WebBrowser.
Tengo un poco de idea de como hacer eso, por ejemplo, con un for para escanear todos los pixeles y determinar cuales son iguales y cuales no, pero el problema es que no se como seguir.
1º Mi codigo inicia con un GetwindowImage que es de alguien que encontre por internet, supongo que lo que hace es crear un nuevo bitmap con la imagen del webbrowser. No se si con WM_ se podria hacerlo de una ventana escondida (mejor dicho sacando solo foto del webbrowser).

2º El segundo codigo es para tomar la foto del WebBrowser.

3º Es el codigo para escanear los pixeles, y aquí es donde esta mi problema. Mi codigo escanea todos los pixeles, ahi vamos bien pero el problema es que el If realiza la acción por cada pixel que encuentra y eso no es lo que quiero. Me gustaria que primero escanee todo y luego realize el If solo 1 vez!

Más me gustaria poder hacer lo siguiente:
Que se realize el GetPixel y el For para ubicar todos los pixeles y que luego me devuelva las coordenadas donde se encuentra mi imagen "cuadro.bmp". No se si se entiende, seria primero el For seguido de el GetPixel para que escanee toda la pantalla y que luego encuentre mi imagen "cuadro.bmp" (con getpixel o otro metodo sencillo) y me de sus coordenadas de inicio.

Este es mi codigo. Espero que se haya entendido, y si me quieren ayudar y no entendieron mi explicación intentare hacerla mas simple.

Código
  1. private static Bitmap GetWindowImage(IntPtr hWnd, Size size) // CODIGO PARA TOMAR SCREENSHOT (LO ENCONTRE POR INTERNET)
  2.        {
  3.            try
  4.            {
  5.                if (size.IsEmpty || size.Height < 0 || size.Width < 0) return null;
  6.  
  7.                Bitmap bmp = new Bitmap(size.Width, size.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
  8.                Graphics g = Graphics.FromImage(bmp);
  9.                IntPtr dc = g.GetHdc();
  10.  
  11.                if (PrintWindow(hWnd, dc, 0) == 0)
  12.                {
  13.                    MessageBox.Show("Fallo");
  14.                }
  15.  
  16.                g.ReleaseHdc();
  17.                g.Dispose();
  18.  
  19.                CloseHandle(dc);
  20.  
  21.                return bmp;
  22.            }
  23.            catch { return null; }
  24.        }
  25.  
  26.        private Bitmap getBrowserSS()  // TOMO UN SCREENSHOT DEL WEBBROWSER
  27.        {
  28.            return GetWindowImage(webBrowser1.Handle, webBrowser1.Size);
  29.        }
  30.  
  31.        private void button1_Click_1(object sender, EventArgs e)
  32.        {
  33.            Bitmap recursos = new Bitmap(@"D:\GO\cuadro.bmp");
  34.            int X, Y;
  35.            for (X = 0; X < getBrowserSS().Width; X++)
  36.            {
  37.                for (Y = 0; Y < getBrowserSS().Height; Y++)
  38.                {
  39.                    if (getBrowserSS().GetPixel(X, Y) == recursos.GetPixel(X, Y))
  40.                    {
  41.                       // ME GUSTARIA QUE ME DEVUELVA DONDE SE ENCUENTRA MI IMAGEN CUADRO.PNG
  42.                    }
  43.                    else
  44.                    {
  45.                        MessageBox.Show("Algo esta mal");
  46.                    }
  47.                }
  48.            }
  49.  
  50.  
  51.  
  52.        }
  53.  

Desde ya muchas gracias =).


En línea

Maurice_Lupin


Desconectado Desconectado

Mensajes: 356

GPS


Ver Perfil WWW
Re: Ayuda con GetPixel (Ingresa para entender)
« Respuesta #1 en: 25 Mayo 2012, 17:13 pm »

Hace un tiempo simulé una especie de OMR con una imagen escaneada. Lo que me ayudo fue que la imagen estaba diseñada en Corel, ahi tenia todas las medidas, mi programa sólo se encargaba de buscar en lugares específicos, y no importaba si la imagen estaba reducida, pues todo estaba en proporción a lo que se diseñó en Corel.

En cuanto a comprobar los pixeles, si ya esta ubicada el cuadro a examinar, podrias avanzar de 10 en 10 para que no demore mucho la comprobación.

Podrías tener todo bien medido, que tu ventana no cambie de tamaño y sólo tendrías que buscar en un lugar especifico o si cambia que lo haga en proporción al ancho y alto de las medidas originales. Espero haberte ayudado.

Saludos.


En línea

Un error se comete al equivocarse.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines