Java 2D


Java 2D

En computación, Java 2D es un API para dibujar gráficos en dos dimensiones usando el lenguaje de programación Java. Cada operación de dibujo Java 2D puede tratarse como rellenar una forma usando un pincel y componiendo el resultado en la pantalla.

Contenido

Conceptos básicos

Estos objetos son parte necesaria de cada operación de dibujo Java 2D.

Formas

Una forma en Java 2D es un limite infinitamente delgado el cual define un interior y un exterior. Los Píxeles internos de la forma están afectados por la operación de dibujo, los que están fuera no.

Intentar rellenar un segmento de línea recto extremadamente fino resultará en que no habrán píxeles afectados, por lo tanto una forma no contiene píxeles. En su lugar, un rectángulo fino se debe usar para que la forma contenga algunos píxeles.

Pinceles

Un pincel genera los colores que serán usados para cada píxel de la operación de relleno. El pincel más simple es java.awt.Color, el cual genera el mismo color para todos los píxeles. Pinceles más complicados pueden producir gradientes, imágenes, o cualquier combinación de colores. Rellenar una forma circular usando el color amarillo resulta en un círculo sólido amarillo, mientras rellenar la misma forma circular usando un pincel que genera una imagen produce un recorte circular de la imagen.

Compuestos

Durante cualquier operación de dibujo, hay una fuente (los píxeles que son producidos por el pincel) y un destino (los píxeles ya en la pantalla). Normalmente, los píxeles fuente simplemente sobrescriben los píxeles de destino, pero el compuesto permite modificar este comportamiento.

El compuesto, dados los píxeles fuente y destino, produce el resultado final que por último aparece en la pantalla. El compuesto más común es java.awt.AlphaComposite, el cual trata los píxeles que están siendo dibujados como parcialmente transparentes, para que los píxeles destino se muestren en algún grado.

Rellenado

Para rellenar una forma, el primer paso es identificar que píxeles caen dentro de la forma. Estos píxeles serán afectados por la operación de relleno. Los píxeles que están parcialmente dentro y parcialmente fuera de la forma pueden ser afectados en menor grado si está activado el Anti-aliasing.

El pincel es requerido para generar un color de cada uno de los píxeles que se van a pintar. En el caso común del relleno de un color sólido, cada píxel será asignado al mismo color.

El compuesto toma los píxeles generados por el pincel y los combina con los píxeles que ya están en la pantalla para producir el resultado final.

Objetos Avanzados

Estos objetos pueden ser entendidos en relación con los objetos más simples escritos antes.

Transformación

Cada operación Java 2D es sujeto a transformación, para que las formas pueden ser traducidas, rotadas, y escaladas cuando son dibujadas. La transformación activa es a menudo la transformación identidad, la cual no hace nada.

Rellenar usando una transformación puede verse como simplemente crear una nueva forma transformada y entonces rellenar esa forma.

Movimiento

Además de la operación rellenar, Java 2D suministra una operación dibujar. Mientras rellenar dibuja el interior de una forma, dibujar dibuja su contorno. El contorno puede ser tan simple como una línea fina, o tan complicado como una línea con bordes redondeados.

El objeto responsable de generar el exterior es el movimiento. Dada una forma de entrada, el movimiento produce una nueva forma que representa su exterior. Por ejemplo, un segmento de línea infinitamente fino (sin interior) no puede ser movido a un rectángulo de ancho de un píxel.

Una operación dibujar puede por lo tanto ser descrito como crear un nuevo, objeto movido y entonces rellenar ese objeto.

Técnicamente hablando, el movimiento es sólo requerido para aceptar una forma de entrada y produce una nueva forma. La implementación de movimiento suministrada con Java 2D implementa las reglas de contorno descritas anteriormente, pero un contorno personalizado podría producir cualquier forma deseada.

Optimizaciones

Conceptualmente, dibujando una línea negra en Java 2D puede pensarse como crear un segmento de línea, transformarlo de acuerdo a la transformación actual, moviéndolo para crear un rectángulo fino, consultando su forma para computar los píxeles que están siendo afectados, generando los píxeles que usan java.awt.Color.BLACK, y entonces componiendo los resultados en la pantalla.

Sin embargo, realizar esta secuencia completa de pasos para cada operación de dibujado sería muy ineficiente. Java 2D por lo tanto optimiza las operaciones de dibujado comunes para que muchos de esos pasos puedan saltarse. Si el pincel es de un color sólido simple, por ejemplo, no hay necesidad de ordenar que genere una lista de los colores que van a ser pintados. Asimismo, si el compuesto por defecto completamente opaco está en uso, actualmente pedir que realice la operación de composición es innecesario y resultaría en esfuerzo inútil.

Java 2D realiza la mínima cantidad de trabajo necesario para hacer que parezca como si realizara todos los pasos para cada operación, por lo tanto conserva gran flexibilidad y alto rendimiento.

Destino

Por simplicidad, los ejemplos en este artículo han asumido que la ventana es el dispositivo destino. Sin embargo, el destino puede ser cualquier cosa, tal como una impresora, imagen de memoria, o incluso un objeto que acepte comandos gráficos Java 2D y los traduzca a ficheros de imagen de Gráficos vectoriales.*

Interoperabilidad Java2D / OpenGL

Desde el build 51 hasta la nueva versión Java SE 6 del lenguaje de programación Java, Java2D y Opengl han llegado a ser interoperables, permitiendo por ejemplo dibujar gráficos 3D animados en lugar de iconos en un Botón (ver JOGL).

Enlaces externos


Wikimedia foundation. 2010.

Mira otros diccionarios:

  • java — java …   Dictionnaire des rimes

  • Java 5 — Java (langage) Pour les articles homonymes, voir Java.  Ne doit pas être confondu avec JavaScript …   Wikipédia en Français

  • Java EE — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia

  • Java EE — Java Platform, Enterprise Edition o Java EE (anteriormente conocido como Java 2 Platform, Enterprise Edition o J2EE hasta la versión 1.4), es una plataforma de programación parte de la Plataforma Java para desarrollar y ejecutar software de… …   Wikipedia Español

  • JAVA — Île volcanique de l’Indonésie, Java est séparé de Sumatra par le détroit de la Sonde, à l’ouest, et de Bali par le détroit du même nom à l’est. Sa superficie est de 132 000 kilomètres carrés. Alors que le relief suggère une division en bandes… …   Encyclopédie Universelle

  • Java EE — Java Enterprise Edition, ou Java EE (anciennement J2EE), est une spécification pour la technique Java de Sun plus particulièrement destinée aux applications d’entreprise. Ces applications sont considérées dans une approche multi niveaux[1]. Dans… …   Wikipédia en Français

  • Java SE — Java Platform, Standard Edition o Java SE (conocido anteriormente hasta la versión 5.0 como Plataforma Java 2, Standard Edition o J2SE), es una colección de APIs del lenguaje de programación Java útiles para muchos programas de la Plataforma Java …   Wikipedia Español

  • Java VM — Java Logo Die Java Virtual Machine (abgekürzt Java VM oder JVM) ist der Teil der Java Laufzeitumgebung (JRE) für Java Programme, der für die Ausführung des Java Bytecodes verantwortlich ist. Hierbei wird im Normalfall jedes gestartete Java… …   Deutsch Wikipedia

  • JAVA — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom …   Wikipédia en Français

  • Java ME — Java Platform, Micro Edition, abgekürzt Java ME [ˈdʒɑːvə ˌɛmˈiː], früher auch als Java Platform 2, Micro Edition oder kurz J2ME bezeichnet, ist eine Umsetzung der Programmiersprache Java für so genannte »embedded consumer products« wie etwa… …   Deutsch Wikipedia

  • Java 2 — Java 2, или Java 2.0 дальнейшее развитие и усовершенствование спецификации исходного стандарта языка и платформы Java, на который теперь принято ссылаться как на Java 1.0. В настоящее время спецификация платформы Java 2 продолжает интенсивно… …   Википедия