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)
-   -   Redibujar un formulario que utiliza la API de Windows (https://www.clubdelphi.com/foros/showthread.php?t=51378)

Aldaya 13-12-2007 18:51:08

Redibujar un formulario que utiliza la API de Windows
 
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

Cita:

Empezado por Aldaya (Mensaje 252453)
¿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


La franja horaria es GMT +2. Ahora son las 06:32:15.

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