viernes, 24 de mayo de 2013

CLASE DEL DIA VIERNES 24 DE MAYO


Buenas noches

Con pesadumbre me ausento hoy por encontrarme en delicado estado de salud.

ESTAS SON LAS ACTIVIDADES A REALIZAR:

Abrir el libro digital: JAVA2D - JAVA A TOPE del enlace ubicado en el blog en la bibliografia.

1.       Transcribir el código del ejemplo BAÑERA de la página 48 en NETBEANS, y hacer los siguientes cambios: poner color, líneas más gruesas y agrandar tamaño del círculo.

2.      Leer el texto “Otra manera de construir figuras: GeneralPath” de las páginas 50 y 51,  traspasar el código de ejemplo en  NETBEANS.  Cambiar la forma de la figura.

3.      Leer el texto: “Establecimiento del clipping path” en las páginas 31 y 32, traspasar el código de ejemplo en NETBEANS. 

4.      Leer el texto:Transformaciones de objetos” en las paginas 32, 33 y 34 y traspasar los respectivos ejemplos a NETBEANS.

5.      Finalmente, leer el textoTratamiento de texto con Java2D” desde las páginas 61 a 64.  Hacer los ejemplos de dibujar una única línea de texto y dibujo con TextLayout en NETBEANS.  

En la próxima clase, si  Dios quiere,  aclaramos cualquier inquietud.  No olviden trabajar en el proyecto gráfico a presentar.    Las notas próximamente las estaré publicando por este  mismo medio.  Y el alumno que me debe el parcial me lo presenta el próximo viernes.

HASTA PRONTO

ING GERDY MARIA ROQUE

martes, 23 de octubre de 2012

ALGUNOS EJEMPLOS SOBRE CLIPPING, FIGURAS Y TEXTO

 
TRABAJANDO CON CLIPPING

public void paint (Graphics g) {
        Graphics2D g2 = (Graphics2D)g;   
        // Primera parte del ejemplo
        int ancho = this.getSize().width;
        int largo = this.getSize().height;
        Ellipse2D e = new Ellipse2D.Float ( ancho/4.0f, largo/4.0f,
                              ancho/2.0f, largo/2.0f);
        g2.setClip(e);
        g2.setColor(Color.cyan);
        g2.fill(new Rectangle2D.Float(0.0f,0.0f,ancho,largo));
       
//Segunda parte del ejemplo
        Rectangle2D r2 = new Rectangle2D.Float( ancho/4.0f+10.0f, largo/4.0f+10.0f,
ancho/2.0f-20.0f, largo/2.0f-20.0f);
        g2.clip(r2);   
        g2.setColor(Color.white);
        g2.fill(new Rectangle2D.Float(0.0f,0.0f,ancho,largo));
}

COMPOSICIONES

public void paint (Graphics g) {
    Graphics2D g2 = (Graphics2D)g;
    Dimension d = getSize();
    int w = d.width;
    int h = d.height;
    // Crea una BufferedImage.
    BufferedImage buffImg = new BufferedImage(w, h,
BufferedImage.TYPE_INT_ARGB);
    Graphics2D gbi = buffImg.createGraphics();
      // Dibujo de un cuadrado rojo
        gbi.setColor(Color.red);
Rectangle2D r1 = new Rectangle2D.Float(150.0f, 50.0f, 100.0f, 100.0f);
        gbi.fill(r1);
    AlphaComposite ac;
    // Dibujo de un rectángulo verde encima
        ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER);
        gbi.setColor(Color.green);
        gbi.setComposite(ac);
        Rectangle2D r2 = new Rectangle2D.Float(150.0f, 100.0f, 150.0f, 100.0f);
        gbi.fill(r2);
      // Dibujo de un cuadrado magenta con preferencia de lo que hay debajo
        ac = AlphaComposite.getInstance(AlphaComposite.DST_OVER);
        gbi.setColor(Color.magenta);
        gbi.setComposite(ac);
        Rectangle2D r3 = new Rectangle2D.Float(100.0f, 100.0f, 100.0f, 100.0f);
        gbi.fill(r3);
      // Dibujo de un cuadrado amarillo que modifica sólo sobre lo que se superpone
        ac = AlphaComposite.getInstance(AlphaComposite.DST_IN, 0.15f);
        gbi.setColor(Color.yellow);
        gbi.setComposite(ac);
        Rectangle2D r4 = new Rectangle2D.Float(150.0f, 150.0f, 100.0f, 100.0f);
        gbi.fill(r4);
    g2.drawImage(buffImg, null, 0, 0);
}


DIBUJANDO CON GENERALPATH

public void paint (Graphics g) {
Graphics2D g2 = (Graphics2D)g;
// Creación del GeneralPath
g2.setColor(Color.green);
GeneralPath gp = new GeneralPath();
gp.moveTo(50.0f,50.0f);
gp.lineTo(100.0f,50.0f);
gp.curveTo(120.0f,30.0f,120.0f,100.0f,180.0f,125.0f);
gp.lineTo(50.0f,150.0f);
gp.closePath();
// Relleno y contorno
g2.fill(gp);
g2.setColor(Color.blue);
g2.draw(gp);
}

DIBUJAR TEXTO

public void paint (Graphics g) {
        super.paint(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.setColor(Color.blue);
        g2.setFont(new Font("Arial", Font.ITALIC, 24));
g2.drawString("Lex Flavia Malacitana", 20, 60);
}

  
TEXTO CON TEXTLAYOUT

public void paint (Graphics g) {
        super.paint(g);
        Graphics2D g2 = (Graphics2D)g;      
FontRenderContext frc = g2.getFontRenderContext();
Font f = new Font("Arial", Font.ITALIC, 24);
TextLayout tl = new TextLayout("Lex Flavia Malacitana", f, frc);
g2.setColor(Color.red);
tl.draw(g2, 20, 60);
}

MAS COMPLETO

public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
FontRenderContext frc = g2.getFontRenderContext();
Dimension tamaño = getSize();
TextLayout tl;
Font f;
f = new Font("Arial", Font.ITALIC, 24);
tl = new TextLayout("Tamaño 24 Arial Cursiva", f, frc);
g2.setColor(Color.pink);
tl.draw(g2, (float)(tamaño.width - tl.getBounds().getWidth())/2,
tamaño.height/2.0f);
f = f.deriveFont(Font.BOLD, 16);
tl = new TextLayout("Tamaño 16 Arial Negrita", f, frc);
g2.setColor(Color.red);
tl.draw(g2, (float)(tamaño.width - tl.getBounds().getWidth())/2,
tamaño.height/3.5f);
f = new Font("Times New Roman", Font.PLAIN, 20);
tl = new TextLayout("Tamaño 20 Times New Roman Normal", f, frc);
g2.setColor(Color.orange);
tl.draw(g2, (float)(tamaño.width - tl.getBounds().getWidth())/2,
tamaño.height/1.5f);
}




martes, 2 de octubre de 2012

CURVAS


import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;

public class CubicCurve2D1 extends JFrame {
  private CubicCurve2D Shape1;
  private CubicCurve2D Shape2;
  private float X1;
  private float Y1;
  private float X2;
  private float Y2;
  private float CX1;
  private float CY1;
  private float CX2;
  private float CY2;
  private double DX1;
  private double DY1;
  private double DX2;
  private double DY2;
  private double DCX1;
  private double DCY1;
  private double DCX2;
  private double DCY2;

  public CubicCurve2D1 () {
    X1 = 10.F;
    Y1 = 20.F;
    X2 = 150.F;
    Y2 = 130.F;
    CX1 = 20.F;
    CY1 = 90.F;
    CX2 = 140.F;
    CY2 = 100.F;
    DX1 = 160.;
    DY1 = 20.;
    DX2 = 230.;
    DY2 = 40.;
    DCX1 = 160.;
    DCY1 = 120.;
    DCX2 = 240.;
    DCY2 = 90.;
    Shape1 = new CubicCurve2D.Float (X1, Y1, CX1, CY1, CX2, CY2, X2, Y2);
    Shape2 = new CubicCurve2D.Double ();
    Shape2.setCurve (DX1, DY1, DCX1, DCY1, DCX2, DCY2, DX2, DY2);
  }

  public void paint (Graphics g) {
    Graphics2D g2D;

    g2D = (Graphics2D) g;

    g2D.setColor (Color.cyan);
    g2D.drawLine ((int)X1, (int)Y1, (int)CX1, (int)CY1);
    g2D.drawLine ((int)X2, (int)Y2, (int)CX2, (int)CY2);
    g2D.drawLine ((int)DX1, (int)DY1, (int)DCX1, (int)DCY1);
    g2D.drawLine ((int)DX2, (int)DY2, (int)DCX2, (int)DCY2);

    g2D.setColor (Color.black);
    g2D.draw (Shape1);
    g2D.draw (Shape2);
  }

}

martes, 18 de septiembre de 2012

DIBUJOS VARIOS EN API JAVA 2D


1 // Demostración de algunas figuras de Java2D.

import java.awt.*;

import java.awt.geom.*;

import java.awt.image.*;

import javax.swing.*;

 

 public class Figuras extends JFrame {

 

    // establecer cadena de barra de título y dimensiones de la ventana

    publicFiguras()

    {

       super( "Dibujo de figuras en 2D" );

 

       setSize( 425, 160 );

       setVisible( true );

    }

 

    // dibujar figuras con la API Java2D

    public void paint( Graphics g )

    {

       super.paint( g );  // llamar al método paint de la superclase

 

       Graphics2D g2d = ( Graphics2D ) g;  // convertir g a Graphics2D

 

       // dibujar elipse 2D rellena con un gradiente azul-amarillo

       g2d.setPaint( new GradientPaint( 5, 30, Color.BLUE, 35, 100,

          Color.YELLOW, true ) ); 

       g2d.fill( new Ellipse2D.Double( 5, 30, 65, 100 ) );

 

       // dibujar rectángulo 2D en rojo

       g2d.setPaint(Color.RED );                 

       g2d.setStroke( new BasicStroke( 10.0f ) );

       g2d.draw( new Rectangle2D.Double( 80, 30, 65, 100 ) );

 

       // dibujar rectángulo 2D redondeado con fondo tamponado

       BufferedImagebuffImage = new BufferedImage( 10, 10,

          BufferedImage.TYPE_INT_RGB );

 

       Graphics2D gg = buffImage.createGraphics();

       gg.setColor(Color.YELLOW ); // dibujar en amarillo

       gg.fillRect( 0, 0, 10, 10 ); // dibujar un rectángulo relleno

       gg.setColor(Color.BLACK );  // dibujar en negro

       gg.drawRect( 1, 1, 6, 6 );   // dibujar un rectángulo

       gg.setColor(Color.BLUE );   // dibujar en azul

       gg.fillRect( 1, 1, 3, 3 );   // dibujar un rectángulo relleno

       gg.setColor(Color.RED );    // dibujar en rojo

       gg.fillRect( 4, 4, 3, 3 );   // dibujar un rectángulo relleno

 

       // pintar buffImage en el objeto JFrame

       g2d.setPaint( new TexturePaint( buffImage,

          new Rectangle( 10, 10 ) ) );

       g2d.fill( new RoundRectangle2D.Double( 155, 30, 75, 100, 50, 50 ) );

 

       // dibujar arco 2D en forma de pastel, en color blanco

       g2d.setPaint(Color.WHITE );

       g2d.setStroke( new BasicStroke( 6.0f ) );

       g2d.draw( new Arc2D.Double( 240, 30, 75, 100, 0, 270, Arc2D.PIE ) );

 

       // dibujar líneas 2D en verde y amarillo

       g2d.setPaint(Color.GREEN );

       g2d.draw( new Line2D.Double( 395, 30, 320, 150 ) );

 

       floatguiones[] = { 10 };

 

       g2d.setPaint(Color.YELLOW );   

       g2d.setStroke( new BasicStroke( 4, BasicStroke.CAP_ROUND,

          BasicStroke.JOIN_ROUND, 10, guiones, 0 ) );

       g2d.draw( new Line2D.Double( 320, 30, 395, 150 ) );

 

    } // fin del método paint

 

    // ejecutar la aplicación

    public static void main( String args[] )

    {

       Figuras aplicacion = new Figuras();

       aplicacion.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );

    }