[C con Clase] WinApi: Evitar parpadeos al redibujar una ventana

Gabriel deadloop en hotmail.com
Vie Abr 11 19:21:09 CEST 2008


El pasado 2008-04-11 07:48:45, Salvador Pozo escribió:
 
SP> Hola:
SP> Por supuesto, es posible hacer lo que comentas.
SP> El ejemplo del curso es, tal vez, demasiado sencillo. Pero no quería añadir complicaciones innecesarias. Se pueden hacer botones "owner-draw" usando mapas de bits, o pintando en DC de memoria, y después transferirlos al del botón.

Gracias por responder tan pronto, pero debo decir que todavía tengo algunas dudas. Creo que es mejor que explique lo que estoy intentando hacer: estoy trabajando en un juego de cartas y el botón que quiero diseñar tiene forma de naipe, es decir que está compuesto por una región "RoundRect" pintada de blanco y en su interior un bitmap. El problema es en el repintado: cuando la carta pierde o gana el foco "parpadea", es decir que puede verse el pintado de la región y luego el agregado del bitmap, creando un efecto algo antiestético.
Suponiendo que yo tengo:

a) la región RoundRect de la carta
b) un memDC donde selecciono el bitmap de la carta
c) otro memDC donde pinto la región de blanco y agrego el bitmap en su interior

¿Puedo tratar a este último memDC (a pesar de que está compuesto de una región y un dibujo) como un simple bitmap y transferirlo con la función StretchBlt o BitBlt al DC del botón?

En este momento no puedo hacer la prueba dado que no tengo el código a mano, pero quería sacarme la duda igualmente.

Desde ya, muchas gracias.
Gabriel.


Más información sobre la lista de distribución Cconclase