Ventana basica para graficar en Java (Graphics)
27 febrero 2011 37 comentarios
En esta ocasion quiero mostrar una propuesta de una ventana para graficar en Java y un resumen de metodos de la Clase java.awt.Graphics. Esto se me ocurrio ya que llevo la materia de graficacion y tuve que hacer uso de estos metodos para crear un dibujo sencillo. Bueno, sin mas que decir, el codigo es este:
/* * Instituto Tecnologico de Zacatepec, Mor. * Descripcion: * Crea una ventana muy basica para graficar, y da * un resumen de metodos para graficar. * @author: Gonzalo Silverio gonzasilve@gmail.com * Archivo: PrimitivasJava.java * */ import java.io.*; import java.lang.*; import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; class PrimitivasJava extends Frame { PrimitivasJava(String titulo,int ancho,int alto) { setTitle(titulo); setBackground(new Color(0x00,0x00,0x00) ); setSize(ancho,alto); setLocationRelativeTo(null); //Centrar setResizable(false); // ### ESCUCHADOR DE VENTANA ### //Para que al dar clic en la x de la esquina de este Frame se cierre addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } public void windowClosed(WindowEvent e) { System.exit(0); } }); } public void paint(Graphics g) { // AQUI VA TODO EL CODIGO PARA GRAFICAR // Aqui se pueden usar las primitivas de graficacion // de la clase Graphics // A continuacion pongo un resumen de metodos de esta clase // y algunas clases relacionadas. // g.drawLine(x1, y1, x2, y2); // g.drawRect(x, y, ancho, alto); // g.fillRect(x, y, ancho, alto); // g.drawOval(x, y, ancho, alto); // g.fillOval(x, y, ancho, alto); // g.drawArc( x, y, ancho, alto, startAngle, arcAngle); // g.fillArc( x, y, ancho, alto, startAngle, arcAngle); // g.drawString(String s, Posx, Posy); // g.setColor(Color c); establece el color de 1er plano // g.setFont(Font f); establece la fuente // g.drawPolyline(int xPuntos[], int yPuntos[], nPuntos); // g.drawPolygon( int xPuntos[], int yPuntos[], nPuntos); // g.drawPolygon( poly); // g.fillPolygon( int xPuntos[], int yPuntos[], nPuntos); Poligono relleno // Las constantes de color son las siguientes: // Color.BLACK, Color.WHITE, Color.DARK_GRAY, Color.GRAY, // Color.LIGHT_GRAY, Color.BLUE, Color.CYAN, Color.GREEN, // Color.RED, Color.MAGENTA, Color.PINK, Color.ORANGE, // Color.YELLOW, Color.BLUE, Color.CYAN // Para crear un color (los enteros r,g,b pueden ir de 0 a 255): // Color miColor = new Color(int r, int g, int b); // Otra clase mas avanzada que Graphics es la clase javax.swing.Graphics2D } public void mostrar() { setVisible(true); } //Punto de entrada del programa public static void main(String args[]) { PrimitivasJava test=new PrimitivasJava("Ventana para graficar en Java",400,400); test.mostrar(); } }
Y la ventana que se genera cuando se ejecuta el codigo anterior es esta:
Como se observa es una ventana al cual le he establecido un fondo negro y esta lista para usar cualquiera de los metodos de la clase Graphics. A continuacion muestro un ejemplo de un dibujo muy basico donde se usan algunos de estos metodos, el codigo:
/* Instituto Tecnologico de Zacatepec, Mor. Descripcion: Ejemplo graficacion muy basico acerca del uso de los metodos de la clase Graphics author: Gonzalo Silverio gonzasilve@gmail.com Archivo: GraficacionEjemplo1.java */ import java.io.*; import java.lang.*; import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; class GraficacionEjemplo1 extends Frame { GraficacionEjemplo1(String titulo,int ancho,int alto) { setTitle(titulo); setBackground(new Color(0xff,0x67,0x65) ); setSize(ancho,alto); setLocationRelativeTo(null); //Centrar setResizable(false); // ### ESCUCHADOR DE VENTANA ### //Para que al dar clic en la x de la esquina de este Frame se cierre addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } public void windowClosed(WindowEvent e) { System.exit(0); } }); } public void paint(Graphics g) { //pared izquierda del cuarto Polygon poligono=new Polygon(); poligono.addPoint(5, 30); poligono.addPoint(102, 100); poligono.addPoint(102, 450); poligono.addPoint(5, 500); g.setColor(new Color(0x17,0xA2,0xFF)); g.fillPolygon(poligono); //puerta del cuarto Polygon puerta=new Polygon(); puerta.addPoint(40, 190); puerta.addPoint(98, 215); puerta.addPoint(98, 453); puerta.addPoint(40, 482); g.setColor(new Color(0xC7,0xF2,0xB0)); g.fillPolygon(puerta); Polygon Marcopuerta=new Polygon(); Marcopuerta.addPoint(40, 190); Marcopuerta.addPoint(98, 215); Marcopuerta.addPoint(98, 453); Marcopuerta.addPoint(40, 482); g.setColor(new Color(0x00,0x00,0x00)); g.drawPolygon(Marcopuerta); //perilla del la puerta g.setColor(new Color(0xA0,0x00,0x0A)); g.fillOval(40,350,10,10); //Fondo del cuarto g.setColor(new Color(0x17,0xA2,0xFF)); g.fillRect(103,100,596,350); //pared derecha del cuarto Polygon poligono2=new Polygon(); poligono2.addPoint(700, 100); poligono2.addPoint(700, 450); poligono2.addPoint(795, 500); poligono2.addPoint(795, 30); g.setColor(new Color(0x17,0xA2,0xFF)); g.fillPolygon(poligono2); //techo del cuarto Polygon poligono3=new Polygon(); poligono3.addPoint(3, 27); poligono3.addPoint(102, 99); poligono3.addPoint(699, 99); poligono3.addPoint(798, 26); g.setColor(Color.WHITE); g.fillPolygon(poligono3); //Lampara colgante //-------- Soporte y cuerdas ---------- g.setColor(Color.GRAY); g.fillRect(386,60,3,15); g.fillArc(380,50,15,15,0,-180); g.drawLine(362,78,412,68); g.drawLine(376,68,400,78); g.fillRect(361,78,2,50); //cuerda lampara1 g.fillRect(412,68,2,40); //cuerda lampara2 g.fillRect(375,68,2,30); //cuerda lampara3 g.fillRect(400,78,2,55); //cuerda lampara4 //Lamparas //-------- Lamparas ---------- g.setColor(Color.WHITE); g.fillArc(352,128,20,45,0,180); //lampara1 g.fillArc(403,108,20,45,0,180); //lampara2 g.fillArc(366,98,20,45,0,180); //lampara3 g.fillArc(391,133,20,45,0,180); //lampara4 //Mesa g.setColor(new Color(0xFF,0x7B,0xEB)); // base mesa g.fillOval(398,485,80,30); g.setColor(new Color(0x67,0x61,0xFF)); // soporte g.fillRoundRect(430,400,20,100,5,5); g.setColor(new Color(0xC7,0x5E,0xA3)); // Mesa g.fillOval(300,350,280,60); g.setColor(new Color(0xA5,0x32,0x92)); g.fillOval(309,345,263,60); //Laptop Polygon poligono4 = new Polygon(); //Pantalla poligono4.addPoint(385, 315); poligono4.addPoint(445,320); poligono4.addPoint(450, 365); poligono4.addPoint(390, 360); g.setColor(Color.WHITE); g.fillPolygon(poligono4); Polygon polPant = new Polygon(); //borde Pantalla polPant.addPoint(385, 315); polPant.addPoint(445,320); polPant.addPoint(450, 365); polPant.addPoint(390, 360); g.setColor(Color.BLACK); g.drawPolygon(polPant); Polygon poligono5 = new Polygon(); //CPU poligono5.addPoint(390, 360); poligono5.addPoint(450, 365); poligono5.addPoint(430, 400); poligono5.addPoint(370, 390); //poligono5.addPoint(315, 485); g.setColor(Color.WHITE); g.fillPolygon(poligono5); Polygon polCPU = new Polygon(); //borde C.P.U. polCPU.addPoint(390, 360); polCPU.addPoint(450, 365); polCPU.addPoint(430, 400); polCPU.addPoint(370, 390); g.setColor(Color.BLACK); g.drawPolygon(polCPU); //Ventanas g.setColor(new Color(0x89,0x49,0x32)); g.fillRect(500,150,180,170); //Marco cafe de la ventana g.setColor(Color.BLACK); g.fillRect(505,175,170,140); //Fondo noche de la ventana g.fillArc(505,155,80,40,0,180); g.fillArc(595,155,80,40,0,180); //Luna g.setColor(Color.WHITE); g.fillOval(625,165,40,40); g.setColor(Color.BLACK); g.fillOval(635,165,40,40); g.setColor(new Color(0x89,0x49,0x32)); g.fillRect(505,240,170,2); //Linea horizontal ventanas g.fillRect(545,150,2,165); //Linea vertical ventana 1 g.fillRect(633,150,2,165); //Linea vertical ventana 2 g.fillRect(585,175,10,140); //Linea divisoria de las 2 ventanas g.setFont( new Font("Arial",Font.PLAIN,24 )); g.setColor(Color.BLUE); g.drawString("Gonzalo Silverio",250,580); } public void mostrar() { setVisible(true); } //Punto de entrada del programa public static void main(String args[]) { GraficacionEjemplo1 test=new GraficacionEjemplo1("Ejemplo de primitivas graficas en JAVA",800,600); test.mostrar(); } } //Fin del ejemplo
Y el resultado es este:
Espero te sirva algo de esto, recuerda que comentar=agradecer. Haa y ya sabes, si quieres los .java basta con dejar tu e-mail. Hasta pronto.
Amigo me podrias manda el codigo? josuetass1308@gmail,com
Yo tambien soy del ITZ 😃 que hermoso fue encontrar esto justo cuando buscaba acerca de graficación y ver un artículo de un alumno o ex alumno de ITZ
amigo ayudame a graficar datos con java 2D .. mi correo es opalma2008@gmail.com
Excelente me podrías enviar los .java……….saludos
Hola que padre aplicacion elaboraste me gustaria si pudieras pasarme tus codigos de antemano gracias Albafika89@gmail.com
me parece muy interesante el aporte me podrias enviar los java a este correo isc.juancarlos123@hotmail.com
de antemano gracias
salu2!!!
Esta muy bien el programa, pero es mucha info, me gustari solo grafivar una funcion simple de la reflexion de una figura sencilla… ya tengo el programa que la saca solo que no se como graficar, te agradeceria tu pronta respuesta
Que tal amigo pues necesitas tomar un curso de graficacion para comprender el tema pues no es algo tan trivial, o si gustas aprender por tu parte compra el libro de la bibliografia de este articulo:
http://graficacionitca3d.blogspot.mx/2012/03/24-transformacion-ventana-area-de-vista.html
mira, encontre el link de descarga del libro: http://depositfiles.com/files/j2kmxdlao
Espero te sirva,
Saludos.
Sin palabras.. en serio! muy útiles tus explicaciones y ejemplos, gracias. 🙂
Por nada Hannah , gracias por leerme. Saludos cordiales
hola me gustaria que me enviaras el codigo a mi correo yoni.acuario@hotmail.com
..te lo envie, solo me faltaba confirmarte. Saludos
Hola, me gustaria me mandaras el codigo a mi correo, le quiero echar un vistazo. Muchas gracias.
..te lo envie, solo me faltaba confirmarte. Saludos Joss
Hola que tal, espero te encuentres de maravilla… buscando un tema similar me encontré con tu post y terminandolo de leer veo que eres webDev y mas me llama mas la atención este articulo, y bueno ahora te hago una pregunta que hace referencia al tema que estoy buscando, a tu post y a tu especialidad,
Podremos hacer Gráficas porcentuales de alguna manera dentro de un WebService y posteriormente adaptar el resultado gráfico a un PDF, para que consecuentemente la aplicación que consume el webservice tenga la posibilidad de consultar ese PDF?,
o crees que se tenga que optar directamente por AJAX, adobe Flex, o algo por el estilo?
desde ya te mando un Gran Saludo,
Felicidades por el post me gusto tu estructura de codigo…
Sorry no lo vi a tiempo.
muy chido creo que e ayudará a mi tarea
quiero dibujar un ahorcado
pero sería paso a paso
tengo la idea de que es asi
uso paint
dibujo en un jtextarea
pero cuando dibujo el cuerpo y lo demás
usaría re paint ???
en realidad no estoy muy seguro la verdad >_< ¡¡¡
ya tengo el contador de los errores
solo me falta diseñar el dibujito del monito ahorcado
pero la verdad no esoty muy seguro si voy por buen camino
:S ¡¡
muchas gracias por la explicación
Pingback: Convertir de Graphic a Imagen - MergeTag : MergeTag
Tengo una duda quiero implementar el algoritmo de punto medio para dibujar círculos con los (x,y) iniciales, el radio r y el angulo teta desde 0. Existe en java alguna funcion que me sirva carnal chido y gracias…
honestamente no lo se. Saludos y gracias x visitar brother
no me llego nada sino envia a la misma direccion solo que del gurlkon77@yahoo.com a hotmail o gmail es que no quisiera los 2 que se muestran en esta tu pagina es que el primero tiene un bloque grande comentado se le debe quitar esos comentarios o no? si tuvieras tutoriales u otros trabajitos mas seria genial por favor te ruego agradeciendo de antemano suerte tb saludos
…te lo acabo de reenviar haber revisa otra vez. la vez pasada tbn te lo envie y lo verifique, sino te lñlega de nueva entonces tienes algun problema con tu maquina.
suerte en tus proyectos y gracias x tu visita..
le kite las lineas comentadas de este link:
https://gonzasilve.wordpress.com/category/java/graficacion/
y aun asi no corre el programa solo kiero ver si ambos programas funcionan en el mismo package o paquete enviame ayudas y tutoriales de swing a gurlkon77@gmail.com por favor gracias y saludos…
prueba el codigo que te envie, a lo mejor con eso.
holas esta muy bueno tu trabajo sera que me lo podes enviar a gurlkon77@gmail.com gracias de antemano
…te mande lo que me pides. Suerte! i gracias x tu visita
no me llego nada sino envia a la misma direccion solo que del gurlkon77@hotmail.com y esta listo para compilar y ejecutarlo verdad? quisiera los 2 que se muestran en esta tu pagina es que el primero tiene un bloque grande comentado se le debe quitar esos comentarios o no? si tuvieras tutoriales u otros trabajitos mas seria genial por favor te ruego agradeciendo de antemano suerte tb saludos
Muchas gracias me sirvió de mucho
…por nada, y gracias pasar por mi blog
MUY BUENO EEEEEEHHHHHH ME AYUDO MUCHO TE AGRADECERIA TAMBIEN SI ME PUUEDES ENVIAR LOS .JAVA A MI CORREO leons59@htomail.com de antemano gracias
…ok te los acabo de enviar. gracias x tu visita
Necesito hacer un proyecto de «Juego Galaxi», en JavaNetbeans…
y la Verdad no se por donde comenzar, yo lo hice en C#, pero es mas complicado aqui, por q no
encuentro un TIMER, que me controle el tiempo…
Gracias.
POr favor, alguiien me pueda ayudar, este es mi direccion:
sorvivor_fredo@hotmail.com
si hay un timer, solo que a lo mejor todavia no lo encuentras. yo en lo personal si lo e usado, pero ahora ando muy ocupado. te envie mi codigo por si te sirve y gracias x visitar mi blog.
Pingback: MergeTag » Blog Archive » Convertir de Graphic a Imagen
muy atractivo el diseño…, agradeceria si me pudieras pasar el código!!!
Excelente trabajo… te felicito! Agradecería muchísimo si pudieras hacermelo llegar a mi correo. Gracias y Saludos
te lo acabo de a tu correo. gracias x visitar. suerte