Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Capturar una sección de una imagen (https://www.clubdelphi.com/foros/showthread.php?t=23774)

opardor 28-07-2005 04:07:14

Capturar una sección de una imagen
 
Hola a todos!!

Gracias a las respuestas de muchos de ustedes he logrado mostrar el escritorio en un TImage. Y ahora me pregunto si existe alguna forma de saber en que sección del escritorio ha ocurrido alguna modificación (por ejemplo al abrir una ventana), y así modificar solo una parte del TImage...

Muchas Gracias :D

Casimiro Notevi 28-07-2005 09:18:20

Creo que no está muy clara tu consulta, al menos para mí, puédes explicarla un poquito más?, gracias.

dec 28-07-2005 11:55:59

Hola,

Si es lo que intuyo y tú muestras en un "TImage" el "escritorio" de Windows y lo que pretendes es que la imagen se actualize conforme el estado del escritorio, digo, me parece que costaría menos y sería más sencillo volver a obtener la imagen completa del escritorio y mostrarla/actualizarla en el "TImage" cada X tiempo, digamos unos segundos, valiéndote de un "TTimer", por ejemplo.

opardor 28-07-2005 20:14:07

Gracias por dedicar su tiempo a contestar...

En primer lugar. La respuesta de dec aclara mi consulta. Trataré de ser más específico. :o Gracias.

En segundo lugar.
Estoy de acuerdo en que es más fácil obtener la imágen completa del "escritorio" de windows. Sin embargo, dado que está imágen cambia constantemente (por lo menos cada que se mueve el puntero) y pretendo enviarla por internet, me pareció buena idea obtener sólo el área en donde ha cambiado y así enviar una "pequeña imagen" (en algunos casos) y las coordenadas iniciales en donde debe ser reemplazada.

Por último. Una manera de hacer esto sería tener dos matrices (anterior y actual) en memoria que representen la imagen completa del "escritorio" y compararlas para ver en donde son diferentes y con esto formar la imagen pequeña pero me parece que sería "costoso" para el procesador...

Gracias.

kalisto 28-07-2005 20:51:01

Lo de comparar las dos imagenes lo puedes hacer con la propiedad scanline de tbitmap.
Luego seria interesante comprimir la imagen para que pese menos.


Sera costoso para el procesador en funcion de las capturas que haga por unidad de tiempo.

vtdeleon 28-07-2005 21:08:41

Saludos
Creo qeu el RealVnc hace lo que pide opardor, capta la imagen en donde ha habido movimiento(segun mis ojos, no a ciencia cierta). He intentado de hacer lo mismo sin exito :( :(

opardor 29-07-2005 22:47:23

Uso de GetUpdateRec
 
Leyendo en la API de windows encontre que con la función GetUpdateRec se obtiene sólo el área de imagen a ser actualizada. Pero al hacer el llamado a la funcion no obtengo resultado alguno. Si alguien me puede dar una pista sobre como emplearla será de mucha ayuda.

Gracias.!!:)

delphi.com.ar 29-07-2005 23:22:01

Siempre tuve la idea de que este tipo de aplicaciones instalaban un hook del tipo WH_CALLWNDPROCRET, y capturaban los WM_PAINT o similares... ¡¡Aclaro que nunca lo he comprobado!!
Por otro lado VNC era opensource, por lo que podrías husmear su código para ver como lo hace ;)

Saludos!


La franja horaria es GMT +2. Ahora son las 03:46:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi