SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: Mollense en Sábado 2 de Febrero de 2008, 17:41

Título: Dibujando En Picturebox
Publicado por: Mollense en Sábado 2 de Febrero de 2008, 17:41
Hola gente sabia.

Tengo una pregunta.

Hace unos días hice un programita que permite dibujar unas figuras en un PictureBox basándome un una WEB (Que no recuerdo). El problema es que al minimizar y restaurar la pantalla (Por ejemplo), lógicamente el contenido del PictureBox se borra.
Para solucionarlo, he colocado en el evento Paint el código que se encarga de dibujar la cuadrícula. Por lo que esta debería verse permanentemente. Pero esto no es así, aunque el código del evento sí se ejecuta.

¿Alguien puede decirme por qué?


Gracias gente.


PD: Adjunto el código.
Título: Re: Dibujando En Picturebox
Publicado por: JuanK en Domingo 3 de Febrero de 2008, 01:08
Tienes la aplicación mal diseñada.

Cambios sugeridos:

1- Crea un arreglo de las cosas que se dibujan en pantalla, por ejemplo vas guardando que cuadros o elipses se deben dibujar en que posiciones etc
2- Luego en el evento paint lo que haces es recorrer ese arreglo y pintar los cuadros
3- Para que el evento paint te funcione debes usar el PaintEventArgs:

Código: Text
  1. Graphics gr&#59;
  2. private void pbDibujo_Paint(object sender, PaintEventArgs e)
  3. {
  4.   gr = e.Graphics;
  5.  
Título: Re: Dibujando En Picturebox
Publicado por: Mollense en Domingo 3 de Febrero de 2008, 20:08
Cita de: "JuanK"
Tienes la aplicación mal diseñada.

Cambios sugeridos:

1- Crea un arreglo de las cosas que se dibujan en pantalla, por ejemplo vas guardando que cuadros o elipses se deben dibujar en que posiciones etc
2- Luego en el evento paint lo que haces es recorrer ese arreglo y pintar los cuadros
3- Para que el evento paint te funcione debes usar el PaintEventArgs:

Código: Text
  1. Graphics gr;
  2. private void pbDibujo_Paint(object sender, PaintEventArgs e)
  3. {
  4.   gr = e.Graphics;
  5.  
¡ Excelente Juan !

En cuanto a los puntos 1 y 2, si, ya los tenía en cuenta pero solamente estaba haciendo pruebas.

Ahora usando PaintEventArgs anda perfecto.

Gracias capo.

Un saludo :beer:

PD: Adjunto el código por si a alguien le sirve.