lunes, 5 de octubre de 2015

Como dibujar una linea, circulo, rectángulo y curva en java

Para dibujar una linea utilizamos las siguientes lineas de código

package graficos;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Color;
class Pantalla extends Frame {
public Pantalla() {
this.setSize(200,150 );
this.setVisible( true );
}
public void paint(Graphics g) {
g.setColor(Color.Blue);
g.drawLine(50, 50, 100, 100);
}
public static void main( String[] args ) {
Pantalla p = new Pantalla();
}
}

Para dibujar un circulo utilizaremos el siguiente código


import java.awt.*; import java.awt.event.*;
class Circulos extends Frame implements ActionListener {

static public void main(String[]args){
  new Circulos().show();
}

//componentes
private Button 
  circulo=new Button("dibujar círculo"), 
  quit=new Button("quit");

//tela de dibujo
private Canvas cv=new Canvas();
private final int W=300,H=300;//ancho y alto

//constructor
public Circulos() {
 //diagramar ventana
   setSize(W,H+2*25);//25 pixeles por borde
   setLayout(new BorderLayout());

 //agregar componentes
   add("North",circulo);
   add("South",quit);
   cv.setSize(W,H); //tamaño de la tela
   add("Center",cv); 

 //activar escuchador
   circulo.addActionListener(this);
   quit.addActionListener(this);
}

//dibujar Circulo
public void actionPerformed(ActionEvent x){
  if(x.getSource()==quit) System.exit(0);
  //coordenadas del centro del circulo
  int h=U.azar(0,W-1), v=U.azar(0,H-1);
  //diámetro y radio
  int d=U.azar(0,Math.min(W,H)-1), r=d/2;
  //obtener objeto de clase Graphics
  Graphics g=cv.getGraphics();
  //establecer color (convención RGB)
  g.setColor(new Color(U.azar(0,255),  //rojo
                       U.azar(0,255),  //verde
                       U.azar(0,255)));//azul

Para dibujar un rectángulo usaremos el código siguiente


Para dibujar un rectángulo en pantalla, basta con llamar al método drawRect() indicando la posición en que deseamos colocar la esquina superior-izquierda del rectángulo y su ancho y alto. Por ejemplo, el código siguiente, Rect1.java, pinta un rectángulo alrededor del applet que lo contiene:
import java.awt.*;
import java.applet.Applet;

public class Rect1 extends Applet {
    int ancho,alto;

    public void init() {
        Dimension d = size();    // devuelve el tamaño del applet
        ancho = d.width;
        alto = d.height;
    
        repaint();
        }

    public void paint( Graphics g ) {
        g.drawRect( 0,0,ancho-1,alto-1 );
        }
    }

El método drawRect() pinta un rectángulo abierto, si queremos un rectángulo relleno, tendremos que invocar al método fillRect(), que tiene idéntica sintaxis. El código siguiente, Rect2.java, pinta un rectángulo relleno en el centro del applet que lo contiene:
import java.awt.*;
import java.applet.Applet;

public class Rect2 extends Applet {
    int apAncho;
    int apAlto;
    int x,y,ancho,alto;

    public void init() {
        Dimension d = size();
        apAncho = d.width;
        apAlto = d.height;
        ancho = apAncho/3;
        alto = apAlto/3;
        x = (apAncho - ancho)/2;
        y = (apAlto - alto)/2;
        
        repaint();
        }

    public void paint( Graphics g ) {
        g.drawRect( 0,0,apAncho-1,apAlto-1 );
        g.fillRect( x,y,ancho-1,alto-1 );
        }
    }

Para dibujar una curva haremos lo siguiente


El java.awt.geom paquete que permite crear un segmento de curva cuadrática o cúbica.

Segmento de curva cuadrática

El QuadCurve2D clase implementa la forma de interfaz. Esta clase representa un segmento de curva paramétrica cuadrática en (x, y) el espacio de coordenadas. LosQuadCurve2D.Float y QuadCurve2D.Double subclases especificar una curva cuadrática en flotador y doble precisión.
Varios setCurve métodos se utilizan para especificar dos puntos extremos y un punto de la curva, cuyas coordenadas se puede definir directamente, por las coordenadas de otros puntos y mediante el uso de una matriz dada control.  Un método muy útil, setCurve (QuadCurve2D), establece el cuadrática la curva con los mismos puntos finales y el punto de control como una curva que se suministra. Por ejemplo:
// Crear nueva QuadCurve2D.Float
QuadCurve2D q = new QuadCurve2D.Float ();
// Dibujar QuadCurve2D.Float con coordenadas set
q.setCurve (x1, y1, ctrlx, ctrly, x2, y2);
g2.draw (q);
Cuadrar segmento de curva paramétrica

Segmento de curva cúbica

El CubicCurve2D clase también implementa la forma de interfaz. Esta clase representa un segmento de curva paramétrica cúbico en (x, y) el espacio de coordenadas.CubicCurve2D.Float y CubicCurve2D.Double subclases especificar una curva cúbica en flotador y de doble precisión.
El CubicCurve2D clase tiene métodos similares para establecer la curva como el QuadraticCurve2D clase, excepto con un segundo punto de control. Por ejemplo:
// Crear nueva CubicCurve2D.Double
CubicCurve2D c = new CubicCurve2D.Double ();
// Dibujar CubicCurve2D.Double con coordenadas set
c.setCurve (x1, y1, ctrlx1,
           ctrly1, ctrlx2, ctrly2, x2, y2);
g2.draw (c);
Segmento de curva cúbica

Botones en Java

Se pueden crear objetos Button con el operador new: Button boton; boton = new Button( "Botón");La cadena utilizada en la creación del botón aparecerá en el botón cuando se visualice en pantalla. Esta cadena también se devolverá para utilizarla como identificación del botón cuando ocurra un evento.Cada vez que el usuario pulsa un botón, se produce un evento, de la misma forma que se produce un evento cuando se aprieta el botón del ratón. Los eventos de pulsación de un botón se pueden capturar sobrecargando el método action():public boolean action( Event evt,Object obj ) { if( evt.target instanceof Button ) System.out.println( (String)obj ); else System.out.println( "Evento No-Button" ); }La distinción entre todos los botones existentes se puede hacer utilizando el objeto destino pasado por el objeto Event y comparándolo con los objetos botón que hemos dispuesto en nuestro interface:import java.awt.*;import java.applet.Applet; public class Botones extends Applet { Button b1,b2,b3; public void init() { b1 = new Button( "Botón B1" ); b2 = new Button( "Botón B2" ); b3 = new Button( "Botón B3" ); this.add( b1 ); this.add( b2 ); this.add( b3 ); } public boolean action( Event evt,Object obj ) { if( evt.target.equals( b1 ) ) System.out.println( "Se ha pulsado el boton B1" ); if( evt.target.equals( b2 ) ) System.out.println( "Se ha pulsado el boton B2" ); if( evt.target.equals( b3 ) ) System.out.println( "Se ha pulsado el boton B3" ); return true; } }


Clase JFrame en Java

La clase JFrame es ligeramente incompatible con la clase Frame. Como todo otro contenedor de alto nivel de la librería Swing, un JFrame contiene un JRootPane como su único elemento. El contentPane proporcionado por el rootPane debería , como una regla , contener todos los componentes que no sean menú mostrados por el JFrame.

A diferencia del Frame , un JFrame tiene alguna noción de como responder cuando el usuario intenta cerrar la ventana. El comportamiento por defecto es simplemente ocultar el JFrame cuando el usuario cierra la ventana. Para cambiar el comportamiento por defecto se debe invocar al método setDefaultCloseOperation() .


MÉTODOS



ATRIBUTOS

static int
EXIT_ON_CLOSE
La salida por defecto al cerrar una ventana.

CONSTRUCTORES


JFrame()
Crea un nuevo frame que es inicialmente visible


JFrame(String título)
Crea un nuevo frame con el título indicado como parámetro

MÉTODOS

Tipo de retorno
Método
Descripción

Container
getContentPane()
Retorna el objeto contentPane.

int
getDefaultCloseOperation()
Retorna la operación que ocurre cuando el usuario hace la operación de cerrar la ventana del frame

JMenuBar
getJMenuBar()
Retorna el menúBar establecido en el frame

void
remove(Component comp)
Remueve el componente indicado como parámetro de éste contenedor

void
setContentPane(Container contentPane)
Establece la propiedad del contentPane

void
setDefaultCloseOperation(int operation)
Establece la operación que sucederá por defecto cuando el usuario cierra la ventana

void
setJMenuBar(JMenuBar menu)
Establece la barra de menú para el frame

void
setLayout(LayoutManager layout)
Por defecto, la distribución de los paneles de éste componente no debe cambiarse; en su lugar, debería ser cambiada la distribución de su contentPane que generalmente es un panel.

miércoles, 9 de septiembre de 2015

Tarea 1

1.1 Aplicaciones gráficas por computadora
En Graficación por computadora existen diversos usos de las gráficas, por ejemplo:

  • Representar el comportamiento de acuerdo a los datos que se proporcionan y así tomar decisiones.
  • Realizar diseños que puedan ser editables.
  • Crear representaciones de obras de arte.
Los gráficos por computadora se han convertido en una potente herramienta para la producción rápida y económica de imágenes. Prácticamente no existe ninguna tarea en la que la representación gráfica de la información no pueda aportar alguna ventaja y es por eso que no sorprende encontrar gráficos por computadora en muchos sectores.


Gráficos y Diagramas:

  • Los gráficos y los diagramas se usan comúnmente para realizar resúmenes financieros, estadísticos, matemáticos, científicos, de ingeniería y económicos, para realizar informes de investigación, resúmenes de gestión, boletines de información al consumidor y otros tipos de publicaciones.
  • Hay disponibles una gran variedad de paquetes gráficos y de dispositivos para estaciones de trabajo, así como servicios comerciales para convertir imágenes generadas en la pantalla de una computadora en películas, diapositivas o transparencias para presentaciones o para guardar en archivos.
Diseño Asistido por computadora:

  •  Uno de los mayores usos de los gráficos por computadora se encuentra en los procesos de diseño, particularmente en arquitectura e ingeniería, aunque ahora muchos productos se diseñan por computadora. Generalmente, se conoce como (CAD, Computer Aided Design, diseño asistido por computadora) o CADD (Computer Aided Drafting and Design).
Entornos de realidad virtual:

  •  Una aplicación más reciente de los gráficos por computadora es la creación de los entornos de realidad virtual en los que el usuario puede interactuar con los objetos en una escena tridimensional. Dispositivos hardware especializados proporcionan efectos de visión tridimensional y permiten al usuario tomar los objetos de la escena.
  • Los entornos de realidad virtual animados se usan frecuentemente para formar a los operadores de equipo pesado o para analizar la efectividad de diferentes configuraciones de cabina y localizaciones de control.
 Visualización de datos:

  • La generación de representaciones de conjuntos de datos o procesos de naturaleza científica, de ingeniería o de medicina es otra nueva aplicación de los gráficos por computadora. Generalmente, esto se conoce como visualización científica. Y el término visualización de negocios se usa para conjuntos de datos relacionados con el comercio, la industria y otras áreas no científicas.
Referencias: Hearn, D., & Baker, M. P. (2006). Gráficos por computadora con OpenGL. Madrid: Pearson Educación S.A.

1.2 Dispositivos de hardware y software para el despliegue gráfico.

Los dispositivos de hardware y software nos ayudan a desplegar o mostrar los gráficos diseñados por computadora, estos son una parte importante de la graficación, ya que esta se ha apoyado de estas herramientas para mostrar o desplegar los modelos creados con ayuda de un software para gráficos.

 Uno de los dispositivos mas empleados para el despliegue de gráficos es el monitor, que primeramente fueron creados a base de tubos de rayos catodicos que actualmente está siendo desplazada por la tecnología de cuarzo liquido en estos dispositivos.

El televisor LCD basa su funcionamiento en los cristales líquidos. Se puede decir que cada pixel de la pantalla incluye moléculas helicoidales de cristal liquido, que es un material especial que comparte propiedades de un solido y un liquido.

Las pantallas o displays de plasma, son planas, ligeras y con una capa superficial que cubre millones de pequeñas celdas, cada celda contiene neón y xenón gaseoso a baja presión y esta cubierta con una substancia fosfórica.

1.3 Formatos gráficos de almacenamiento

La información de una imagen digital se almacena en un archivo binario para almacenar los datos, se puede realizar en diferentes formatos gráficos cada uno y ofrece propiedades diferentes para visualizar la imagen con una mejor perspectiva de ella.

Estos deben proporcionar una buena calidad en la imagen, así como mayor velocidad al cargar la imagen; existen dos tipos de formatos:

  • Vectoriales
  • Mapa de bits (rasterizados)
Cuando una imagen esta rasterizada se identifica por que aparece una rejilla rectangular de pixeles o puntos de color y en los vectoriales representan una imagen a traves del uso de objetos geometricos como curvas y poligonos.

Algunos formatos de mapa de bits pueden ser:

  • ART
  • BMP Windows Bitmanp
  • DRW draw
  • GIF
  • JPG
Al contrario que un bitmap, una imagen vectorial puede ser escalada, rotada o deformada, sin que ellos perjudique la calidad de la imagen. Algunos formatos vectoriales son:


  • Al
  • Adobe Illustrador Document
  • CDR CorelDRAW
  • CGM Computer Graphics Metafile



Diagnóstico

package diagnostico;
import java.util.Scanner;
/**
 *
 * @author andy
 */
public class Diagnostico {

    /**
     * @param args the command line arguments
     */
 
    public static void main(String[] args) {
// TODO code application logic here
int dato;
Scanner leer=new Scanner (System.in);
System.out.println("Nivel");
dato=leer.nextInt();
for (int i=1;i<=dato;i++)
{
    for (int j=1;j<i+1;j++)
    {
        System.out.print("*");
    }
    System.out.println("\n");
}
    }
 
}