Publié le 22/06/2011
Auteur axel
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Dessiner des formes sur une image

Est-ce que JAVA sait dessiner une image ?
Sans surcharger la méthode paint(Graphics g), les fonctions AWT de JAVA dispose de toutes les fonctions nécessaires pour dessiner. En fait, l'objet Graphics s'utilise comme un Canvas, une surface ou l'on peut dessiner des lignes, des cercles et des rectangles. Par ailleurs, ces opérations sont très rapides avec l'objet BufferedImage qui utilise une image tampon stockée en mémoire.

Créer une image avec des formes geométriques

Il s'agit d'un exemple minimaliste pour les fonctions suivantes:
ShapeDrawing(): creer un BufferedImage,
background(): remplir le fond de l'image,
circle(): dessiner un cercle,
rectangle(): dessiner un rectangle,
savepng(): enregistrer le BufferedImage au format png.

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
 
/**
 * Dessiner des formes sur une image
 * http://www.fobec.com/java/1105/dessiner-formes-sur-une-image.html
 * @author Axel - ® fobec.com 2011
 */
public class ShapeDrawing {
 
    private BufferedImage image;
    private int width;
    private int height;
 
    /**
     * Constructor: créer une nouvelle image
     * @param width
     * @param height
     */
    public ShapeDrawing(int width, int height) {
        this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        this.width = width;
        this.height = height;
    }
 
    /**
     * Fixer la couleur du fond
     * @param color
     */
    public void background(Color color) {
        Graphics g = image.getGraphics();
        g.setColor(color);
        g.fillRect(0, 0, this.width, this.height);
        g.dispose();
    }
 
    /**
     * Dessiner un cercle
     * @param color
     */
    public void circle(Color color) {
        Graphics g = image.getGraphics();
        g.setColor(color);
        g.fillOval(0, 0, this.width, this.height);
        g.dispose();
    }
 
    /**
     * Dessiner un rectangle
     * @param color
     */
    public void rectangle(Color color) {
        Graphics g = image.getGraphics();
        g.setColor(new Color(1.0f, 0.0f, 0.0f));
        g.fillRect(50, 50, this.width - 100, this.height - 100);
        g.dispose();
    }
 
    /**
     * Enregistrer l'image au format png
     * @param filename
     */
    public void savepng(String filename) {
        try {
            ImageIO.write(image, "png", new File(filename));
        } catch (IOException exception) {
            exception.printStackTrace();
        }
    }
 
    /**
     * Exemple de dessin sur une image
     * @param args
     */
    public static void main(String[] args) {
        ShapeDrawing sd = new ShapeDrawing(200, 200);
        sd.background(new Color(240, 240, 240));
        sd.circle(Color.YELLOW);
        sd.rectangle(Color.BLUE);
        sd.savepng("c://123.png");
    }
}

Image crée avec JAVA

shapedrawing
Voici à quoi ressemble l'image 123.png générée par l'exemple ci-dessous,
ça être difficile de gagner un concours de web design avec ça !

Le but de cet exemple est de montrer comment dessiner des formes avec JAVA. Celles-ci pourront être enregistrées dans un fichier ou utilisé directement dans une application (sprite).

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - tutorial
Mise a jour
22/06/2011
Visualisation
vu 3333 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Verkork dans java

Le probleme c'est que ce code ne convient pas quand une partie de la page est dynamique, ie qu'elle est rafraichit toutes les minutes par exemple. Par exemple pour une telle page, c'est...

Publié par jerome dans php5

Excellente classe, merci pour ce petit code qui va me permettre de me passer de ma page igoogle qui ferme vendredi

Publié par Fobec dans java

As-tu essaye sans le parametre de la cle ?
(supprimer la ligne url += "&key=" + this.ApiKey;)
A priori, cela fonctionne sans aucune authentification sur l'api ;)

Publié par ZINEDDINE dans CMS

SaLUT Monsieur
tu peux avec ce deux mot pass ouvrir tous les tables paradox
1-jIGGAe
2-cupcdvum
respecter le majjuscul
bonne chance .

Publié par Débutant dans CMS

merci , et bon courage pour d'autre programme