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...

11 comentarios:

Anónimo dijo...

hola tony a mi me parecio muy buena tu explicacion del programa creo q tienbes talento para escribir jajaj
lo voy a intentar hacer en clase gracias
roberto sorgo gonzalez

Anónimo dijo...

Orale esta mas sencillo de lo que pense ! gracias por todos los posts tony, nos sirven mucho y nos facilitan la realizacion de los programas. Tu ruleas.

Atte ale

Anónimo dijo...

ya lo stoy haciendo, solo una queja, q una q otra imagen cn codigo numas nu carga x_X

Atte. Cruz Rocha 5TPO

Anónimo dijo...

Excelente, y sobre todo el capturar el codigo y no solo bajarlo, excelente con excelentes resultados.

Kalaca dijo...

Gracias Loco esta muy bueno su aporte
Estoy intentando hacer que dibuje en un PictureBox y no lo e logrado un ayudita

Carlos dijo...

funciona perfecto, gracias man!! oye una preguntota, cómo podría hacerle para guardar el dibujo como una imagen .jpg o .bmp???
saludos
pepe

Tony Valderrama dijo...

Eso está un poco más complicado. Este solo usa la ventana para pintar sobre él, pero si minimizas la ventana y lo vuelves a restaurar, vas a ver que se borra todo lo que habías pintado.

Para guardar la imagen, se tendría que ir guardando los pixeles, dependiendo del formato que desees. No he visto si VB tiene alguna forma automática de hacerlo, tampoco lo he buscado, pero a lo mejor hay una clase o control o algo que lo haga.

¡Saludos!

Carlos dijo...

que tal tony, de nuevo gracias por tu apoyo. ya encontré como guardar la imagen. hay un método que se llama CopyFromScreen y ese objeto gráfico lo puedes pasar a un bitmap para poder guardarlo.

saludos.

Tony Valderrama dijo...

Gracias por la aportación: gracias a ti, aprendí algo nuevo.

¡Saludos y gracias de nuevo!

Anónimo dijo...

que mas, esta muy interesante el programa pero lo hice tal cual como esta en las imagenes pero no me funciona osea no me grafica nada y quisiera saber si le hace falta algo pues necesito una ayuda extra

Tony Valderrama dijo...

La verdad, no sé... he probado este programa varias veces, pero nunca había tenido problemas.

¿Podrías darme más información para intentar ayudar?

El Tony y sus ondas...

Related Posts Plugin for WordPress, Blogger...