Estoy capturando una parte de la pantalla y escaneando a través de los píxeles para un determinado rango de color.GetDIBits y recorrer los píxeles usando X, Y
Miré MSDN's Capturing an Image ejemplo y sé cómo utilizar las funciones.
Puedo obtener los bits en una matriz, pero no estoy seguro de cómo hacerlo de manera que pueda recorrerlo como lo haría con una imagen. Un pseudo-ejemplo (que estoy seguro que está muy lejos):
for (x = 1; x <= Image.Width; x += 3)
{
for (y = 1; y <= Image.Height; y += 3)
{
red = lpPixels[x];
green = lpPixels[x + 1];
blue = lpPixels[x + 2];
}
}
eso es básicamente lo que quiero hacer, por lo que si el rojo, el azul y el verde es un color determinado, sabré lo que coordinar sus at (x, y) en la imagen.
Simplemente no sé cómo usar GetDIBits de tal manera, y cómo configurar la matriz de forma adecuada para poder lograr esto.
En el código falta una instrucción que se inicializa en MyBMInfo .bmiHeader.biSize = sizeof (MyBMInfo); – xMRi
@xMRi Tienes razón, gracias por detectar el error. Creo que ahora está arreglado, moví la inicialización antes de la primera llamada a 'GetDIBits'; AFAIK no es necesario reiniciarlo después de la primera llamada. – dyp
Hmmm. No estoy seguro de eso. Intenté esto en mi código y si hago la segunda llamada a GetDIBits aparece un error que indica que la estructura local tiene un buffer Overflow en la pila ... Finalmente volví a una solución si inicializaba la estructura manualmente. En algunos casos, no desea tener una compresión. Reanudar la información reutilizará la compresión ... No estoy seguro si esto se cumple. Pero no tuve tiempo de verificar esto más. – xMRi