Post on 23-Jan-2016
JAVA 2D – CC60H
Víctor González T.
Cristian Vásquez P.
JAVA 2DIntroducción
•Provee un marco flexible
•Es independiente del dispositivo
•Extiende AWT
•Provee mecanismos uniformes para la manipulación de los objetos
JAVA 2D
Sus objetivos:
•Permitir la construcción de aplicaciones con interfaces gráficas avanzadas
•Manejar gráficos, textos e imágenes de alta calidad independiente de su plataforma
•Conseguir una integración con las otras tecnologías de Java
JAVA 2D
Características: Manejo de Gráficos
•Antialised rendering
JAVA 2D
Características: Manejo de Gráficos (Cont.)
•Estilos de Relleno arbitrarios
JAVA 2D
Características: Manejo de Gráficos (Cont.)
•Transparencias y Sobreposiciones
JAVA 2D
Características: Manejo de Gráficos (Cont.)
•Distintas Formas de Trazos
JAVA 2D
Características: Manejo de Gráficos (Cont.)
•Transformaciones (traslación, rotación, escalamiento o deformaciones)
JAVA 2D
Características: Manejo de Gráficos (Cont.)
•Bezier path
JAVA 2D
Características: Manejo de Texto
•Soporte extendido para tipografías
JAVA 2D
Características: Manejo de Texto (Cont.)
•Soporte Extendido para despliegue de tipografías
JAVA 2D
Características: Manejo de Imágenes
•In-Despliegue de Imágenes en Memoria
JAVA 2D
Características: Manejo de Imágenes (Cont.)
•Operaciones avanzadas sobre imágenes
JAVA 2D
Características: Dispositivos
•Soporte Transparente para dispositivos gráficos
JAVA 2D
Características: Manejo de color
•Soporte estándar ICC
•espacios de color arbitrarios
JAVA 2D
Características: Manejo de color (Cont.)
•Conversión de colores
JAVA 2D
Breve Descripción de la API
Java.awt.color
java.awt.font
java.awt.geom
java.awt.print
com.sun.images.codec.jpeg
java.awt.image.renderable
JAVA 2D
Breve Descripción de la API (Cont).
Java.awt
Java awt.image
JAVA 2D
Ejemplos: Manejo de Gráficos (1)
redtowhite = new GradientPaint(x,y,red,x+rectWidth, y,white);
g2.setPaint(redtowhite);
g2.fill (new Ellipse2D.Double(x, y, rectWidth, rectHeight));
JAVA 2D
Ejemplos: Manejo de Gráficos (2)
for (int N = 0; N < 18; N++) {
float i = (N + 2) / 2.0f; float x = (float) (5+i*(w/2/10));
float y = (float) (5+i*(h/2/10)); float ew = (w-10)-(i*w/10);
float eh = (h-10)-(i*h/10);
float alpha = (N == 0) ? 0.1f : 1.0f / (19.0f - N);
g2.setColor(new Color(0f, 0f, 0f, alpha));
g2.fill(new Ellipse2D.Float(x,y,ew,eh));
}
JAVA 2D
Ejemplos: Manejo de Gráficos (3)
GeneralPath filledPolygon = new GeneralPath(GeneralPath.WIND_EVEN_ODD, 4);
filledPolygon.moveTo(x,y); filledPolygon.lineTo(x+d, y+d);
filledPolygon.lineTo(x, y+d); filledPolygon.lineTo(x+d, y);
filledPolygon.closePath();
g2.setPaint(red);
g2.fill(filledPolygon);
JAVA 2D
Ejemplos: Manejo de Gráficos (4)
Construcción de una pera (las hojas)
leaf = new Ellipse2D.Double();
leaf1 = new Area(leaf); leaf2 = new Area(leaf);
...
leaf.setFrame(ew-16, eh-29, 15.0, 15.0); leaf1 = new Area(leaf);
leaf.setFrame(ew-14, eh-47, 30.0, 30.0); leaf2 = new Area(leaf);
leaf1.intersect(leaf2); g2.fill(leaf1);
...
leaf.setFrame(ew+1, eh-29, 15.0, 15.0); leaf1 = new Area(leaf);
leaf2.intersect(leaf1); g2.fill(leaf2);
JAVA 2D
Ejemplos: Manejo de Texto (1)
FontRenderContext frc = g2.getFontRenderContext();
f = new Font("serif", Font.BOLD,w/6);
t = new TextLayout("Outline", f, frc);
sw = (float) t.getBounds().getWidth(); sh = (float) t.getBounds().getHeight();
sha = t.getOutline(AffineTransform.getTranslateInstance(w/2-sw/2,h/2+sh/2) );
g2.setColor(Color.black); g2.draw(sha);
g2.setColor(Color.red); g2.fill(sha);
JAVA 2D
Ejemplos: Manejo de Imágenes (1)
public static final float[] SHARPEN3x3 = { 0.f, -1.f, 0.f,
-1.f, 5.0f, -1.f,
0.f, -1.f, 0.f};
BufferedImage dest = new bufferedImage(iw,ih,BufferedImage.TYPE_INT_RGB);
Kernel kernel = new Kernel(3,3,SHARPEN3x3);
ConvolveOp cop = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
cop.filter(src,dest);
JAVA 2D
Ejemplos: Manejo de Imágenes (2)
byte reverse[] = new byte[256];
for (int j=0; j<200; j++){
reverse[j]=(byte)(256-j);
}
ByteLookupTable blut=new ByteLookupTable(0, reverse);
LookupOp lop = new LookupOp(blut, null);
lop.filter(src,dest);
JAVA 2D
FIN