Mantener pixels en una ventana con la función SetPixel

07/01/2005 - 21:23 por Jorge | Informe spam
Hola:

Soy nuevo en este foro. Os planteo una duda que tengo, a ver si me la podéis
resolver. Estoy haciendo una aplicación que captura imágenes y las muestra en
diferentes ventanas. Durante la ejecución las imágenes las guardo
temporalmente en un array dinámico y las muestro en una ventana con la ayuda
de la función SetPixel. El problema es que la imagen no se mantiene, es
decir, desaparece en cuanto minimizo la ventana o situo otra encima. ¿Hay
alguna forma de hacer que se mantenga? ¿Existe otra función u otra manera más
eficiente de mostrar una imagen en una ventana?

Venga, nada más. Muchas gracias y un saludo.

Preguntas similare

Leer las respuestas

#1 Roberto C. Ianni
08/01/2005 - 00:01 | Informe spam
Hola Jorge,

Si estas usando MFC, tenes que programar el evento OnPaint de
la ventana donde queres motrar la imagen y ahí usar el SetPixel... este
evento se va a ejecutar cuando se neceserite pintar la pantalla nuevame,
como el caso que planteas vos... "desaparece en cuanto minimizo la ventana o
situo otra encima".

Sino estas con MFC tenes que capturar el mensaje WM_PAINT de la
ventana que hace lo mismo que el evento OnPaint.

Saludos,

"Jorge" escribió en el mensaje
news:
Hola:

Soy nuevo en este foro. Os planteo una duda que tengo, a ver si me la
podéis
resolver. Estoy haciendo una aplicación que captura imágenes y las muestra
en
diferentes ventanas. Durante la ejecución las imágenes las guardo
temporalmente en un array dinámico y las muestro en una ventana con la
ayuda
de la función SetPixel. El problema es que la imagen no se mantiene, es
decir, desaparece en cuanto minimizo la ventana o situo otra encima. ¿Hay
alguna forma de hacer que se mantenga? ¿Existe otra función u otra manera
más
eficiente de mostrar una imagen en una ventana?

Venga, nada más. Muchas gracias y un saludo.
Respuesta Responder a este mensaje
#2 Rodrigo Corral [MVP]
08/01/2005 - 15:19 | Informe spam
Como bien dice Roberto, debes pintar el OnPaint o en respuestea al mensaje
WM_PAINT, dado que la función SetPixel no es precisamente rápida, no estaria
mal que utilizaces un sistema de doble buffer para pintar y evitar parpadeos
feos, creas un DC compatible con la ventana, pintas sobre el y luego pasas
lo que has pintado a la ventana. Tambien seria buena idea controlar que
parte necesita redibujado y repintar solo esa, no todo el area cliente.

Hechalé un vistazo a http://www.codeproject.com/gdi/flickerfree.asp

Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#3 Jorge
12/01/2005 - 12:15 | Informe spam
Muchas gracias por la respuesta. Haré lo que me habéis comentado.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida