21 noviembre 2006

Peint - Programa mexicanizada del Paint que viene con Windows hecho solo para demostrar el uso de funciones gráficas usando VB .NET

Si quieres hacer un programa que sea una especie de "Paint" sencillo usando VB .NET, sigue leyendo porque voy a explicar como hacerlo.

Esta es la ventana del programa en ejecución. En la parte superior de la ventana puedes elegir la herramienta con la que se va a dibujar, el color a usar y el tamaño de la "brocha". Y hay dos botones: uno que borra la ventana y la otra para salir del programa.


En primer lugar, hay que dibujar la interfaz. Este es muy sencillo, ya que solo hay que dibujar una ventana (o Form) con el fondo de color blanco, un panel color gris en la parte superior, 3 combo box de estilo lista para el color, herramienta y tamaño, y dos botones. Así se ve el ambiente de desarrollo:


Ahora vamos viendo el código. Necesito declarar una pluma (System.Drawing.Pens) y una brocha (System.Drawing.Brushes) para poder dibujar las figuras. También declaro un entero para guardar el tamaño de la figura que se dibujará.

En el Form1_Load se llenan los comboboxes de las figuras, colores y tamaños posibles.


Tengo que validar el evento Form1_MouseDown. Tiene que pintar la figura si da un solo click sobre la forma. Como en el evento MouseDown hago toda la dibujadera, lo ejecuto desde aquí sin ninguna bronca.

La función Form1_MouseMove se ejecuta cada vez que se mueve le cursor del mouse. Aquí solo reviso que esté apretando el botón izquierdo del mouse y, si es que está presionado, dibuja la figura seleccionada. Por medio de un SELECT CASE decide la figura.

Otra cosa que tengo que programar es el cambio de color. Si el usuario selecciona un elemento del Combobox de colores, hago que tanto la pluma como la brocha sean de ese color. Todo esto lo hago dentro del evento Combobox2_SelectedIndexChanged.


Cambiar el tamaño es fácil. En Combobox3_SelectedIndexChanged asigno el valor numérico del combobox a la variable global del tamaño. Aquí también programo a los botones que borran la pantalla (Button1_Click), el cual solo pinta de un color la forma (ActiveForm.BackColor tiene ese valor) y el que sale del programa (Button2_Click).
Parece que así funciona muy bien. Solo toma nota que si se tiene que redibujar la ventana, lo que se ha dibujado se pierde. Esto se debe a que las ventanas (o formas) se están redibujando constantemente: cada vez que son minimizadas, maximizadas, que otra ventana se pone arriba de ellas, etc. Para esto, se tendría que interrumpir el evento PAINT (WM_PAINT en VC++) para volver a pintar todo, lo cual implica tener alguna manera de "recordar" lo pintado. Tal vez eso lo podrás hacer más adelante...
Publicar un comentario
Related Posts Plugin for WordPress, Blogger...