Copyright © 2001 Laurent Deruelle1 LE GRAPHISME AVEC JAVA 2D Laurent Deruelle

Slides:



Advertisements
Présentations similaires
Aire d’un parallélogramme
Advertisements

PHP5 its a kind of magic. Chargement automatique function __autoload( $nom_classe ) { require_once('obj/'.$nom_classe.'.class.php'); } si on exécute le.
Université de Bordeaux I DESS IMM Synthèse d’images
C++ 5ème cours Patrick Reuter maître de conférences
Spécialisation/généralisation Héritage Polymorphisme
Programmation événementielle
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
Images Lire une image Images d’icones Afficher une image
Arbres Un premier exemple Contenu Rendu Ecouteurs Parcours
(Classes prédéfinies – API Java)
Voisin-Polian : Introduction à Java 1 Introduction à Java - AWT - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »
Partiel : le sujet Un graphe non-orienté :
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
PHP5 its a kind of magic. Chargement automatique function __autoload( $nom_classe ) { require_once('obj/'.$nom_classe.'.class.php'); } si on exécute le.
LE GRAPHISME AVEC JAVA 3D
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Threads Module Java Expert.
Cinématique Étude du mouvement d’un corps en fonction du temps, indépendamment de toute cause pouvant le provoquer ou le modifier. Le mouvement s’effectue.
EFFETS DU VENT SUR TRAJECTOIRE ET VITESSE / SOL
Création des pièces d'un puzzle avec Photoshop
Processworks / 3DQuikForm Présentation Denis AUGUSTE Lycée de Lorgues.
Chapitre IV Object, interfaces, classes imbriquées.
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
POWERPOINT 97 POMazagol Les barres d'outils PowerPoint donne la possibilité douvrir de nombreuses « barres doutils ». Pour ajouter ou enlever une barre.
Concevoir un diaporama avec Power Point.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Écouteurs de click d'une fenêtre
Python Interfaces graphiques
Faculté I&C, Claude Petitpierre, André Maurer Les objets Introduction.
du package graphique ggplot2
IFT3355: Infographie Projections
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
Créer une interface graphique avec Photoshop.
Jeu de role interactif Axel MANGUY Enora GABORY. I - construction de la démarche et mise en œuvre des moyens Cahier des charges.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Interface graphiques.
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Graphical User Interface
DESS CCI POO-JAVA TD n°7 exercice n°1
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Projet Image en C++ Composition du trinôme : DUPONT Thomas MEHAULT Maxime NICOLAS Rémi L3 MI - Année
Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.
Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction.
Passage entre quaternions et matrice des cosinus directeurs Transition from Quaternions to Direction Cosine Matrices.
Multi-Thread Jian-Yun Nie
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Formation Développeur Java Applet et interfaces graphiques avec AWT
Java Swing.
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
COURS DE PROGRAMMATION ORIENTEE OBJET :
Les pointeurs en C. valeur : main () { float valeur; void* pointeur; }
Introduction au Langage C
SVG: Scalable Vector Graphics
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
PROTOTYPE D’UN PROGRAMME ÉCRIT EN C++ BASÉ SUR OPENGL
Exemples photofiltre.
Programme de retouche d’images sous python
Interfaces Graphiques
GENIE MULTIMEDIA Eléments graphiques
11/04/ L'héritage Cours 7 Cours 7.
Tutorat en bio-informatique
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Deux grandes catégories Les images BITMAP Les images VECTORIELLES.
Introduction à la programmation objet avec java
Adobe Illustrator Création vectorielle.
L’outil Processing pour de la programmation créative
Master Etudes Médiévales M-1 : UE Informatique Séance 2 Adobe illustrator dessin vectoriel F. Hautefeuille.
Javascript HTML5 - CANVAS
Transcription de la présentation:

Copyright © 2001 Laurent Deruelle1 LE GRAPHISME AVEC JAVA 2D Laurent Deruelle

Copyright © 2001 Laurent Deruelle2 L API JAVA2D API JAVA2D –capacités graphiques avancées en deux dimensions –graphismes, images, et textes 2D –extension java.awt et remplacement des classes de base

Copyright © 2001 Laurent Deruelle3 L API JAVA2D Caractéristiques Java2D : –structure de remplissage (dégradés, motifs) –personnaliser la largeur et le style d un trait –anticrénelage pour lisser les bords d objets dessinés g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);

Copyright © 2001 Laurent Deruelle4 Espace de Coordonnées Zone en 2D pouvant être décrite à l aide de coordonnées x, y. (0,0) est le coin supérieur gauche de la surface coordonnées utilisateur coordonnées périphériques (fenêtre, imprimante, etc) => translation, rotation, etc. conversions automatiques durant le rendu

Copyright © 2001 Laurent Deruelle5 La Classe Graphics2D La classe java.awt.Graphics2D étend la classe java.awt.Graphics. Pour utiliser Java2D, il faut transformer l objet Graphics en un objet Graphics2D : public void paintComponent (Graphics g) { Graphics2D g2D = (Graphics2D) g;... }

Copyright © 2001 Laurent Deruelle6 Le Rendu Spécifier comment un objet sera dessiné dans la surface d affichage attributs pour le rendu : –couleur –largeur de ligne –motifs de remplissage –transparence –etc.

Copyright © 2001 Laurent Deruelle7 Exemple de Rendus Le style Trait : setStroke() Le style Remplissage : setPaint() Le style Composition : setComposite()

Copyright © 2001 Laurent Deruelle8 Exemple de Rendus Le style Transformation : setTransform() Le style Clip : setClip() le style Anticrénelage : setRenderingHints()

Copyright © 2001 Laurent Deruelle9 Les couleurs 2D On spécifie les couleurs à l aide de la méthode setColor(Color c) Exemple: g2D.setColor(Color.black);

Copyright © 2001 Laurent Deruelle10 Motifs de Remplissage Les motifs contrôlent la manière dont un objet dessiné est rempli. –couleur unie –dégradé –texture –motif personnalisé

Copyright © 2001 Laurent Deruelle11 Motifs de Remplissage Le motif se définit avec la méthode setPaint(Paint paint); L interface Paint peut être implémentée pour définir un motif de remplissage Exemple: –GradientPaint –TexturePaint –Color :couleur unie

Copyright © 2001 Laurent Deruelle12 La classe GradientPaint Le gradient permet de définir un dégradé de couleur: –acyclique (linéaire) –cyclique (à répétition: indiquer true au constructeur de GradientPaint) Exemple : GradientPaint(x1, y1, Color.black, x2, y2, Color.white, true);

Copyright © 2001 Laurent Deruelle13 La classe GradientPaint

Copyright © 2001 Laurent Deruelle14 La classe TexturePaint Elle permet de remplir une forme à l aide d une image, spécifié en tant que BufferedImage. Exemple : TexturePaint(image, rectangle) –rectangle est utilisé pour spécifier la taille de l image et sa fréquence de répétition

Copyright © 2001 Laurent Deruelle15 La classe TexturePaint

Copyright © 2001 Laurent Deruelle16 Le type Trait En awt classique, toutes les lignes mesurent 1 pixel de large. En Java2D, la largeur varie en utilisant la méthode setStroke(Stroke s). L interface Stroke est implémentée uniquement par BasicStroke.

Copyright © 2001 Laurent Deruelle17 La classe BasicStroke Il décrit le rendu d une forme faite au crayon. BasicStroke(float largeur, int ornement, int jonction)

Copyright © 2001 Laurent Deruelle18 L Ornement ornement est –BasicStroke.CAP_BUTT : carré –BasicStroke.CAP_ROUND : arrondi –BasicStroke.CAP_SQUARE : carré plus long

Copyright © 2001 Laurent Deruelle19 La Jonction La jonction est : –BasicStroke.JOIN_MITER : joint les segments en étendant leurs bords externes –BasicStroke.JOIN_ROUND : arrondi l angle formé entre deux ségments –BasicStroke.JOIN_BEVEL : joint les ségments par une ligne droite

Copyright © 2001 Laurent Deruelle20 Le Clipping Le clipping consiste à définir une zone d affichage. Toutes formes hors de cette zone ne sera pas affiché. Exemple : Ellipse2D ellipse = new Ellipse2D.Float(); Rectangle2D rect = new Rectangle2D.Float();... ellipse.setFrame(x, y, ew, eh); g2.setClip(ellipse); //définit la zone de clipping rect.setRect(x+5, y+5, ew-10, eh-10); g2.clip(rect); //la zone finale est l intersection de l ellipse et du rectangle

Copyright © 2001 Laurent Deruelle21 Le Clipping

Copyright © 2001 Laurent Deruelle22 Le Compositing Le compositing permet de mélanger les couleurs de plusieurs formes Il permet de gérer la transparence en spécifiant une valeur alpha. La valeur alpha spécifie le degré de transparence –1.0 totalement opaque –0.0 totalement transparent

Copyright © 2001 Laurent Deruelle23 Le Compositing ac = AlphaComposite.getInstance(getRule(rule), alpha); public int getRule(int rule){ int alphaComp = 0; switch ( rule ) { case 0: alphaComp = AlphaComposite.SRC; break; case 1: alphaComp = AlphaComposite.DST_IN; break; case 2: alphaComp = AlphaComposite.DST_OUT; break; case 3: alphaComp = AlphaComposite.DST_OVER; break; case 4: alphaComp = AlphaComposite.SRC_IN; break; case 5: alphaComp = AlphaComposite.SRC_OVER; break; case 6: alphaComp = AlphaComposite.SRC_OUT; break; case 7: alphaComp = AlphaComposite.CLEAR; break; } return alphaComp; }

Copyright © 2001 Laurent Deruelle24 Le Compositing public void paintComponent(Graphics g) { super.paintComponent( g ); Graphics2D g2 = (Graphics2D) g; BufferedImage buffImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); Graphics2D gbi = buffImg.createGraphics(); // effacer a surface. g2.setColor(Color.white); g2.fillRect(0, 0, d.width, d.height); int rectx = w/4; int recty = h/4;

Copyright © 2001 Laurent Deruelle25 Le Compositing // Draws the rectangle and ellipse into the buffered image. gbi.setColor(new Color(0.0f, 0.0f, 1.0f, 1.0f)); gbi.fill(new Rectangle2D.Double(rectx, recty, 150, 100)); gbi.setColor(new Color(1.0f, 0.0f, 0.0f, 1.0f)); gbi.setComposite(ac); gbi.fill(new Ellipse2D.Double(rectx+rectx/2,recty+recty/2,150,100)); // Draws the buffered image. g2.drawImage(buffImg, null, 0, 0); }

Copyright © 2001 Laurent Deruelle26 Le Compositing

Copyright © 2001 Laurent Deruelle27 Les Formes Java2D Lorsque les attributs et le style de rendu de l objet Graphics2D sont réalisés : –créer l objet –dessiner l objet

Copyright © 2001 Laurent Deruelle28 Les Formes Java2D les objets sont des formes géométriques (java.awt.geom) : –Line2D –Rectangle2D –Ellipse2D –Arc2D –GeneralPath (polygone)

Copyright © 2001 Laurent Deruelle29 Les Lignes 2D Les lignes sont créées à l aide de la classe Line2D.Float Exemple : Line2D.Float ligne = new Line2D.Float(60f, 5f, 13f, 28f);

Copyright © 2001 Laurent Deruelle30 Les Rectangles 2D Les rectangles sont créés à l aide des classes Rectangle2D.Float ou RoundRectangle2D.Double Les paramètres du constructeur sont le point (x,y) de départ, puis la largeur et la hauteur. Exemple: Rectangle2D.Float(10f, 13f, 40f, 20f) RoundRectangle2D.Float(10f, 13f, 40f, 20f, largeurarc, hauteurarc)

Copyright © 2001 Laurent Deruelle31 Les Ellipses 2D Les objets ovales sont appelés ellipses en Java2D. Ils sont créés à l aide de la classe Ellipse2D.Float les paramètres sont le point de départ, puis la largeur et la hauteur Exemple : –Ellipse2D.Float(113, 25, 22, 40)

Copyright © 2001 Laurent Deruelle32 Les Arcs 2D Les arcs de cercle en Java2D sont créés à l aide de la classe Arc2D.Float les quatre premiers paramètres indiquent les coordonées x,y, largeur et hauteur. Les trois derniers sont le degré de départ de l arc, le nombre de degré qu il parcourt, et un entier décrivant comment il se ferme (Arc2D.OPEN: non fermé, Arc2D.CHORD: ligne droite, Arc2D.PIE: vers le centre)

Copyright © 2001 Laurent Deruelle33 Les Polygones Les polygones sont créés en définissant chaque mouvement d un point à un autre. Les polygones sont définis à l aide d un objet GeneralPath. La méthode moveTo(x, y), permet de créer le premier point du polygone.

Copyright © 2001 Laurent Deruelle34 Les Polygones Les méthodes lineTo(x, y) permet de relier le point courant à un autre. La méthode closePath() permet de fermer le polygone. Exemple : –GeneralPath poly = new GeneralPath(); –poly.moveTo(10f, 10f); poly.lineTo(55f, 55f); –poly.closePath();

Copyright © 2001 Laurent Deruelle35 Le texte en 2D Le texte est dessiné à l aide la méthode drawString(chaine, x, y) Exemple : –g2D.drawString(Bonjour, 10f, 20f);

Copyright © 2001 Laurent Deruelle36 Les Images Java2D implémente un nouveau modèle pour la manipulation d images. Exemple : Image image = Toolkit.getDefaultToolkit().getImage(img.gif); g2.drawImage(image, x, y, largeur, hauteur, this); Supposer un - Jpanel -JFrame

Copyright © 2001 Laurent Deruelle37 Les Images int iw = image.getWidth(this); int ih = image.getHeight(this); bi = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB); Graphics2D big = bi[i].createGraphics(); big.drawImage(image,0,0,this);

Copyright © 2001 Laurent Deruelle38 Dessiner les objets Tous les objets dessinés utilisent les mêmes méthodes de la classe Graphics2D : –draw(Shape s) pour les contours, –fill(Shape s) pour les objets remplis, –drawImage(BufferedImage) Définir les couleurs –setBackground(Color.black); –setForeground(Color.white);

Copyright © 2001 Laurent Deruelle39 Les Transformations Graphics2D L objet Graphics2D peut appliquer des opérations sur la surface d affichage : –scale(x, y) pour mettre à l echelle (<1) –rotate (theta) effectue une rotation –rotate (theta, x, y) effectue une rotation et une translation –translate (double x, double y) effectue une translation –translate (int x, int y) modifie l origine de la surface