PDA

Ver la Versión Completa : Redibujar un formulario que utiliza la API de Windows


Aldaya
13-12-2007, 18:51:08
Buenas tardes,

he hecho un formulario donde se dibuja una cuadrícula con diferentes llamadas a la función Rectangle de la API de Windows.

Cuando minimizo la ventana y vuelvo a maximizarla, se redibujan los botones, las etiquetas, ... excepto aquello dibujado mediante la API, que no se dibuja de nuevo.

¿Alguna sugerencia?

Gracias por adelantado.

seoane
13-12-2007, 20:37:26
¿Alguna sugerencia?

Volverlo a dibujar :D

Aunque suene a broma, lo digo en serio, todo lo que dibujes sobre el canvas del formulario (o de un TPaintBox) se borrara cada vez que lo minimices o sea tapado por otra ventana, es la manera en como trabaja windows. Si quieres darle cierta permanencia a lo que dibujas tienes que guardar toda la información necesaria para reconstruir el dibujo y volverlo a dibujar en cada evento OnPaint.

La otra alternativa es dibujar sobre un TImage, lo que dibujas sobre un TImage no se borra. Y no se borra porque internamente el propio componente TImage guarda un copia de lo que se dibujó y lo vuelve a pintar en cada evento OnPaint.

Aldaya
18-12-2007, 11:52:53
Lo de redibujar ya me lo imaginaba ;)

Guardo toda la información para dibujar en un array y tengo una función que lo dibuja.
Pero poner la función de redibujar en el evento OnPaint carga mucho la memoria.

Me quedo con la solución del TImage.

Gracias por todo