JAVA 2D – CC60H Víctor González T. Cristian Vásquez P.
JAVA 2D Introducció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