Java 2D - Java 2D

En informatique , Java 2D est une API permettant de dessiner des graphiques en deux dimensions à l'aide du langage de programmation Java . Chaque opération de dessin Java 2D peut finalement être traitée comme le remplissage d' une forme à l' aide d'une peinture et la composition du résultat à l' écran .

Organisation

L'API Java 2D et sa documentation sont disponibles en téléchargement dans le cadre de JDK 6. Les classes d'API Java 2D sont organisées dans les packages suivants dans JDK 6:

Concepts de base

Ces objets font partie intégrante de chaque opération de dessin Java 2D.

Formes

Une forme en Java 2D est une limite qui définit un intérieur et un extérieur. Les pixels à l'intérieur de la forme sont affectés par l'opération de dessin, ceux à l'extérieur ne le sont pas.

Si vous essayez de remplir un segment de ligne droite , aucun pixel n'est affecté, car une telle forme ne contient aucun pixel. Au lieu de cela, un rectangle fin doit être utilisé pour que la forme contienne quelques pixels.

Des peintures

Une peinture génère les couleurs à utiliser pour chaque pixel de l'opération de remplissage. La peinture la plus simple est celle java.awt.Colorqui génère la même couleur pour tous les pixels. Des peintures plus compliquées peuvent produire des dégradés, des images ou même toute combinaison de couleurs. Le remplissage d'une forme circulaire à l'aide de la couleur jaune donne un cercle jaune uni, tandis que le remplissage de la même forme circulaire à l'aide d'une peinture qui génère une image produit une découpe circulaire de l'image.

Matériaux composites

Lors de toute opération de dessin, il y a une source (les pixels produits par la peinture) et une destination (les pixels déjà à l'écran). Normalement, les pixels source écrasent simplement les pixels de destination, mais le composite permet de modifier ce comportement.

Le composite, étant donné les pixels source et de destination, produit le résultat final qui se retrouve finalement à l'écran. Le composite le plus courant est java.awt.AlphaComposite, qui peut traiter les pixels dessinés comme partiellement transparents, de sorte que les pixels de destination apparaissent dans une certaine mesure.

Remplissage

Pour remplir une forme, la première étape consiste à identifier les pixels qui se trouvent à l'intérieur de la forme. Ces pixels seront affectés par l'opération de remplissage. Les pixels qui se trouvent partiellement à l'intérieur et partiellement à l'extérieur de la forme peuvent être moins affectés si l' anti-crénelage est activé.

Il est ensuite demandé à la peinture de générer une couleur pour chacun des pixels à peindre. Dans le cas courant d'un remplissage de couleur unie, chaque pixel sera défini sur la même couleur.

Le composite prend les pixels générés par la peinture et les combine avec les pixels déjà à l'écran pour produire le résultat final.

Objets avancés

Ces objets peuvent être considérés comme exécutant leurs fonctions en termes d'objets plus simples décrits ci-dessus.

Transformer

Chaque opération Java 2D est soumise à une transformation , de sorte que les formes peuvent être traduites, pivotées, cisaillées et mises à l'échelle au fur et à mesure qu'elles sont dessinées. La transformation active est le plus souvent la transformation d'identité , qui ne fait rien.

Le remplissage à l'aide d'une transformation peut être considéré comme la simple création d'une nouvelle forme transformée, puis le remplissage de cette forme.

Accident vasculaire cérébral

En plus de l' opération de remplissage , Java 2D fournit une opération de dessin . Tandis que le remplissage dessine l'intérieur d'une forme, draw dessine son contour. Le contour peut être aussi simple qu'une ligne fine ou aussi compliqué qu'une ligne en pointillés avec chaque tiret ayant des bords arrondis.

L'objet responsable de la génération du contour est le trait . Étant donné une forme d'entrée, le trait produit une nouvelle forme représentant son contour. Par exemple, un segment de ligne infiniment fin (sans intérieur) peut être tracé dans un rectangle d'un pixel de large.

Une opération de dessin peut donc être décrite comme la création d'un nouvel objet tracé puis le remplissage de cet objet.

Techniquement parlant, le trait n'est requis que pour accepter une forme d'entrée et produire une nouvelle forme. L'implémentation de trait fournie avec Java 2D implémente les règles de contour décrites ci-dessus, mais un trait personnalisé peut produire n'importe quelle forme qu'il souhaite.

Optimisations

Conceptuellement, dessiner une ligne droite noire en Java 2D peut être considéré comme la création d'un segment de ligne, le transformant en fonction de la transformation actuelle, le caressant pour créer un rectangle fin, l'interrogation de cette forme pour calculer les pixels affectés, générant les pixels en utilisant java.awt.Color.BLACK, puis composez les résultats sur l'écran.

Cependant, effectuer toute cette séquence d'étapes pour chaque opération de dessin serait très inefficace. Java 2D optimise donc les opérations de dessin courantes afin que plusieurs de ces étapes puissent être ignorées. Si la peinture est une couleur unie simple, par exemple, il n'est pas nécessaire de la commander pour générer une liste de couleurs à peindre. De même, si le composite totalement opaque par défaut est utilisé, lui demander en fait d'effectuer l'opération de composition est inutile et gaspillerait des efforts.

Java 2D effectue le minimum de travail nécessaire pour donner l' impression qu'il exécute toutes ces étapes pour chaque opération, conservant ainsi à la fois une grande flexibilité et des performances élevées.

Destination

Par souci de simplicité, les exemples textuels fournis dans cet article ont supposé que l'écran est le périphérique de destination. Cependant, la destination peut être n'importe quoi, comme une imprimante, une image mémoire ou même un objet qui accepte les commandes graphiques Java 2D et les traduit en fichiers d'images graphiques vectorielles .

Interopérabilité Java2D / OpenGL

Depuis Java SE 6 , Java2D et OpenGL sont devenus interopérables, permettant par exemple de dessiner des graphiques 3D animés au lieu d'icônes sur un bouton (voir JOGL ).

Voir également

Les références

Liens externes