El objeto Bipmap y la persistencia de gráficos.

15. March 2008 02:25 by Oscar.SS in Desarrollo .NET, Desarrollo Windows  //  Tags: ,   //   Comments (0)

Está claro que dibujar con .NET es fácil. El problema, como siempre reside en las infinitas clases que disponemos en .NET. ¡Aprender lleva mucho tiempo en .NET!.

Cuando se comienza a dibujar suele resultar complicado el tema de la persistencia de gráficos. ¿Que es esto de la "persistencia de gráficos"?.

Supongamos que tenemos una ventana (formulario) abierta en la pantalla. Supongamos también que minimizamos la ventana y a continuación la volvemos a maximizar. ¿Que a ocurrido?.

En realidad la ventana vuelve a redibujarse por completo. Es decir, todos los gráficos y controles que tenga esta ventana, además de la propia ventana, vuelven a dibujarse. Esto es posible porque toda la información de la ventana está cargada en memoria.

Con lo cual, cuando realizamos gráficos en .NET los debemos cargar en memoria para que vuelvan a dibujarse si el formulario se minimiza o es cubierto por otro formulario en pantalla. La forma de hacer esto es por medio de la clase Bitmap del espacio de nombres System.Drawing.

También es posible hacerlo por medio del evento Paint de la clase Control. E incluso "más elegante", sobrescribiendo el método OnPaint(). Pero todo esto...queda para otro artículo.

De momento creemos un proyecto de tipo "Aplicación de Windows Form". En el formulario, agregamos un botón. Desde el IDE establecemos las siguientes propiedades del objeto button1:

-BackColor: GradientActiveCaption
-Location: 20 ; 20
-Size: 240 ; 240
-Text: Pulsar aquí para didujar

Hacemos doble click sobre el botón para acceder a su controlador de evento. A continuación, dentro del método button1_click escribimos el código que realizará el dibujo sobre el propio botón. Para poder dibujar hay que agregar una directiva using al espacio de nombres System.Drawing que es donde se encuentran los objetos de dibujo más usuales.


//Pasos a seguir para la PERSISTENCIA DE GRÁFICOS.

namespace Persitencia_de_Gráficos
{
    
public partial class Form1 : Form
    {
        
public Form1()
        {
            InitializeComponent()
;
        
}

        
private void button1_Click(object sender, EventArgs e)
        {
            
//1- Cargamos un mapa de bits en la memoria del mismo tamaño que el control.
            
Bitmap miMapa = new Bitmap(this.button1.Width, this.button1.Height);

            
//2- El mapa de bits se lo asignamos a la propiedad Image del control
            //(BackgroupImage para Form) sobre el se mostrará la imagen. Es decir,
            //indicamos cual es la imágen que debe mostrar el control.
            
button1.Image miMapa;

            
//3- Creamos la superficie de dibujo. Es decir, le indicamos a un objeto
            //Graphics (miDibujo) donde tiene que dibujar, que dibuje sobre el mapa bits.
            
Graphics miDibujo Graphics.FromImage(miMapa);

            
//4- Dibujamos con el objeto miDibujo

            //Creamos una estructura de puntos. Representan las esquinas de un rectangulo.
            
PuntosDeEsquinas Esquina = new PuntosDeEsquinas();

            
Esquina.superiorX = this.button1.Location.X + 10;
            
Esquina.superiorY = this.button1.Location.Y + 10;
            
Esquina.inferiorX = this.button1.Width - (* (10 20));
            
Esquina.inferiorY = this.button1.Height - (* (10 20));

            
//Creamos un rectangulo con las dimensiones establecidas por las esquinas.
            
Rectangle unRectangulo = new Rectangle(Esquina.superiorX, Esquina.superiorY,
              Esquina.inferiorX, Esquina.inferiorY)
;

            
//Dibujamos un círculo delimitado por el rentengulo (unRectangulo);
            
miDibujo.DrawEllipse(new Pen(Color.BlueViolet, 10), unRectangulo);
        
}

        
struct PuntosDeEsquinas
        {
            
public int superiorX,
              superiorY,
              inferiorX,
              inferiorY
;
        
}
    }
}


Esta es la representación mostrada al ejecutar nuestra aplicación.

Para comprobar la persistencia de los gráficos dibujados solo tenemos que minimizar el formulario, o cubrirlo con otra ventana. Cuando volvamos a mostrar nuestro gráfico comprobaremos felizmente que todo está correctamente dibujado.

Recent Comments

Comment RSS

Month List