Autor
|
Tema: [C++]Ayuda con un programa funcion getpixel (Leído 3,984 veces)
|
Ahustinkrone
Desconectado
Mensajes: 6
|
Holas, estoy intentando crear un programa que obtenga el valor rgb o bgr de un pixel especifico en la ventana activa que no seria la del programa en si. osea yo quiero que revise el pixel que esta en X, Y y me diga que color es cada x tiempo. el problema es que no entiendo como funciona getpixel(hdc,x,y). supongo que x e y son las coordenadas del pixel a revisar pero ¿hdc?.. sino alguien me puede explicar como utilitaria getpixel para lo que necesito ? Trabajo con Code:Blocks y ya linkie gdi32. PD: es mi primera post ^^
|
|
« Última modificación: 31 Mayo 2014, 07:08 am por Ahustinkrone »
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
Holas, estoy intentando crear un programa que obtenga el valor rgb o bgr de un pixel especifico en la ventana activa que no seria la del programa en si. osea yo quiero que revise el pixel que esta en X, Y y me diga que color es cada x tiempo. el problema es que no entiendo como funciona getpixel(hdc,x,y). supongo que x e y son las coordenadas del pixel a revisar pero ¿hdc?.. sino alguien me puede explicar como utilitaria getpixel para lo que necesito ? Trabajo con Code:Blocks y ya linkie gdi32. PD: es mi primera post ^^
GetDC ( Hwnd ) http://msdn.microsoft.com/en-us/library/windows/desktop/dd144871(v=vs.85).aspx. Hay otras maneras también. Y Además mejor cambia de compilador a VC++ ( Visual Studio ).
|
|
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
HDC = Handle to Device Context No se mucho de win api pero se que para poder dibujar en windows necesitas un Device Context. El Handle es lo que maneja el Device Context. Digamos que una ventana es un Device Context cuando creas un hdc le asignas a una DC para poder ser manejado.
Es como cuando creas una variable y después le asignas el valor que va a guardar. hdc es la variable y en ella guardamos la ventana DC.
por ejemplo:
HDC hdc = GetDC ( NULL );
HDC es el tipo de dato hdc es el nombre que le damos GetDC ( NULL ); asigna a hdc la una ventana.
En fin hdc es un puntero a un ventana DC.
|
|
|
En línea
|
|
|
|
Ahustinkrone
Desconectado
Mensajes: 6
|
porque me lo recomiendas ? que caracterusticas presenta mejores/distantas al code::blocks? Volviendo al tema,mire varios ejemplos del uso del HDC y pude entenderlo un poco, gracias a los 2 por sus repuestas, voy a probar con GetDC (NULL);estaba usando GetWindowDC(hwnd); para seleccionar la ventana donde posicione el puntero, pero creo que seria mas estable si utiliza la pantalla entera ¿no?. ahora otra duda, si getpixel se utilisa en una ventana seleccionada y no en toda la pantalla el origen de las coordenadas X e Y es la esquina de la ventana o de la pantalla ? quiero comentar (por si a alguien le interesa)que el programa que estoy haciendo es un autopot para juegos, bastante sencillo y simplemente como hobbie porque no quería bajar uno, quería hacer uno funciona asi: 1-Inicia el programa 2-(una vez dentro de la ventana del juego) Alt + click para marcar en la barra de vida/mana/etc el punto en el que quieres que se empiecen a utilizar o dejen de utilizarse las pociones. 3-se guarda el color original de este pixel. 4-analiza el pixel seleccionado si este cambia de color se empiezan a utilizar las pociones con un cierto intervalo(simula presionar una tecla). 5-si el pixel vuelve a su color original deja de utilizar pociones.eso es todo, bastante sencillo. ya esta casi terminado. gracias espero sus respuestas
|
|
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
porque me lo recomiendas ? que caracterusticas presenta mejores/distantas al code::blocks? Es que estas trabajando con winapi, y para eso por supuesto que es mejor, pero tampoco eres obligado a cambiar y por eso es una recomendación. Aquí hay un código que si me funciono. Si le haces unas modificaciones y lo pones en un bucle te puede servir para lo que quieres. http://stackoverflow.com/questions/4839623/getting-pixel-color-in-cBusca aprender sobre la api de windows si te interesa el tema Suerte.
|
|
|
En línea
|
|
|
|
Ahustinkrone
Desconectado
Mensajes: 6
|
Gracias, la pregunta de "porque me lo recomendabas?" no iba de malas, de verdad quería saber en que era mejor el visual. y.. #include <windows.h> #include <stdio.h> using namespace std; HDC dcx; int x; int y; int Color; int capturarcoord = 1; int full; int main() { while (capturarcoord == 1){ if (GetAsyncKeyState(164) && GetAsyncKeyState(18) && GetAsyncKeyState(1)){ HWND hwnd; // el manejador de la ventana a trabajar POINT pt; // Puntero para las cordenadas GetCursorPos(&pt); // La funcion que dara las cordenadas hwnd2 = WindowFromPoint(pt); // la funcion que capta la ventana dcx =GetWindowDC(hwnd); x = pt.x; y = pt.y; capturarcoord = 0; printf("Coordenas Seteadas!X=%i Y=%i\n\n\n",x,y); } } full = GetPixel(ventana,x,y); while (1<2){ printf("Pixel Check in \(%i,%i\) normal-value=%i\n",x,y,full); Color = GetPixel(dcx,x,y); if (full != Color){keybd_event(VK_F10,0x79,0 , 0);keybd_event(VK_F10,0x79,KEYEVENTF_KEYUP , 0);printf("Funciona!");} printf("%i\(10\) = %x\(16\)\n",Color,Color); Sleep(380); } return 0; }
Eso es lo hice hasta ahora, faltan algunas modificaciones para hacerlo mas bello y configurable pero el motor funciona correctamente, doy el tema por resuelto. gracias por sus respuestas
|
|
« Última modificación: 31 Mayo 2014, 07:16 am por Ahustinkrone »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[ayuda] getpixel & setpixel
.NET (C#, VB.NET, ASP)
|
Alfai
|
1
|
3,039
|
11 Mayo 2009, 16:56 pm
por BrokenWindow
|
|
|
GetPixel!
Programación Visual Basic
|
andresxdddd
|
6
|
3,326
|
18 Enero 2011, 20:33 pm
por BlackZeroX
|
|
|
[C] ayuda, programa compila bien pero no cumple la funcion (solucionado)
Programación C/C++
|
xiruko
|
6
|
3,779
|
15 Abril 2012, 23:48 pm
por xiruko
|
|
|
Ayuda con GetPixel (Ingresa para entender)
.NET (C#, VB.NET, ASP)
|
GonzaFz
|
1
|
2,478
|
25 Mayo 2012, 17:13 pm
por Maurice_Lupin
|
|
|
Problema que no comprendo con la api GetPixel
Programación Visual Basic
|
Elemental Code
|
7
|
3,501
|
7 Septiembre 2012, 00:17 am
por Dessa
|
|