IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

Quelle API utiliser ?


Sujet :

2D Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Points : 71
    Points
    71
    Par défaut Quelle API utiliser ?
    Bonjour,

    Je développe une application en Java et j'arrive à la partie représentation graphique.

    Je dois représenter un nuage de points en 2D et j'aimerai obtenir les caractéristiques suivantes sur mon graphique :
    - Deux axes principaux
    - Tracer un cercle unité
    - Ajouter mes points
    - Ajouter en passant la souris sur un point le numéro du point correspondant au format texte sous le curseur
    (-Evolution possible vers une représentation 3D ???)

    Je souhaiterai savoir quelle API utiliser par rapport à mes besoins... J'ai entendu parler de JFreeChart mais je ne sais pas si c'est le plus judicieux

    Merci à tous par avance pour vos conseils !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Tu as l'air de souhaiter quelque chose de relativement personnalisable.
    Je pense que tu peux utiliser directement JAVA 2D par contre en effet, tu partiras d'une base vierge et il faudra tout faire à la mano.
    Cela dit, c'est un excellent exercice !

    Voilà un petit exemple que j'avais réaliser en réponse à un autre post.
    Ce n'est pas ce que tu souhaites réaliser, mais ca donne un exemple de ce qu'il est possible de faire en peu de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    import java.awt.AWTException;
    import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Cursor;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Rectangle;
    import java.awt.RenderingHints;
    import java.awt.Robot;
    import java.awt.Toolkit;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    import java.awt.image.BufferedImage;
    import java.text.DecimalFormat;
    import java.text.NumberFormat;
     
    import javax.swing.*;
     
    @SuppressWarnings("serial")
    public class RegleEcran extends JFrame implements MouseMotionListener, MouseListener {
    	private int x, y, x_start_point, y_start_point;
    	private NumberFormat nf = new DecimalFormat("#.00");
    	private final static Font LEGENDE = new Font("Sans Serif, Helvetica, Arial", Font.ROMAN_BASELINE, 10);
    	private BufferedImage image=null;
     
    	public RegleEcran () {
    		x_start_point=-1;
    		y_start_point=-1;
     
    		addMouseMotionListener(this);
    		addMouseListener(this);
    		setUndecorated(true);
    	}
     
    	public void setImage(BufferedImage image){
    		this.image = image;
    	}
     
    	@Override
    	public void paint(Graphics g) {
    		super.paint(g);
     
    		Graphics2D g2d = (Graphics2D)g;
    		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
     
    		if(image!= null){
    			g2d.drawImage(image, 0, 0, this);
    		}
     
    		if(x_start_point!=-1){
    			// ligne
    			g2d.setColor(Color.RED);
    			g2d.drawLine(x_start_point, y_start_point, x, y);
     
    			// croix
    			g2d.setColor(Color.WHITE);
    			g2d.setStroke(new BasicStroke(3));
    			g2d.drawLine(x_start_point, y_start_point-3, x_start_point, y_start_point+3);
    			g2d.drawLine(x_start_point-3, y_start_point, x_start_point+3, y_start_point);
    			g2d.drawLine(x, y-3, x, y+3);
    			g2d.drawLine(x-3, y, x+3, y);
     
    			g2d.setColor(Color.BLACK);
    			g2d.setStroke(new BasicStroke(1));
    			g2d.drawLine(x_start_point, y_start_point-3, x_start_point, y_start_point+3);
    			g2d.drawLine(x_start_point-3, y_start_point, x_start_point+3, y_start_point);
    			g2d.drawLine(x, y-3, x, y+3);
    			g2d.drawLine(x-3, y, x+3, y);
     
    			// legendes
    			g2d.setColor(new Color(127,127,127,127));
    			g2d.fillRect(x_start_point-60, y_start_point, 50, 35);
    			g2d.fillRect(x+10, y, 72, 95);
     
    			g2d.setColor(Color.BLACK);
    			g2d.setFont(LEGENDE);
     
    			g2d.drawString("x : " + (x_start_point), x_start_point-55, y_start_point+15);
    			g2d.drawString("y : " + (y_start_point), x_start_point-55, y_start_point+27);
     
    			g2d.drawString("x : " + (x), x+15, y+15);
    			g2d.drawString("y : " + (y), x+15, y+27);
     
    			g2d.drawString("h : " + (x - x_start_point), x+15, y+45);
    			g2d.drawString("v : " + (y - y_start_point), x+15, y+57);
     
    			g2d.drawString("° : " + nf.format(-(Math.toDegrees(Math.atan2(y-y_start_point , x-x_start_point)))), x+15, y+75);			
    			g2d.drawString("d : " + nf.format((Math.sqrt(Math.pow((x - x_start_point),2)+Math.pow((y - y_start_point),2)))), x+15, y+87);
    		}
    	}
     
    	// Listeners
    	public void mouseDragged(MouseEvent e) {
    		x = e.getX();
    		y = e.getY();
    		repaint();
    	}
     
    	public void mouseMoved(MouseEvent e) {}
     
    	public void mouseClicked(MouseEvent e) {}
     
    	public void mouseEntered(MouseEvent e) {}
     
    	public void mouseExited(MouseEvent e) {}
     
    	public void mousePressed(MouseEvent e) {
    		x_start_point=e.getX();
    		y_start_point=e.getY();
    		x = e.getX();
    		y = e.getY();
    		repaint();		
    	}
     
    	public void mouseReleased(MouseEvent e) {}
     
    	// Main
    	public static void main(String[] args) throws AWTException {
    		RegleEcran frame = new RegleEcran();
     
    		Toolkit leKit = frame.getToolkit();
    		Dimension tailleFenetre = leKit.getScreenSize();
     
    		Rectangle screenRect = new Rectangle(tailleFenetre);
    		//creer le screenshot
    		Robot robot = new Robot();
    		BufferedImage image = robot.createScreenCapture(screenRect);
     
    		frame.setImage(image);
    		frame.setBounds(0, 0, tailleFenetre.width, tailleFenetre.height);
    		frame.setVisible(true);
    		Cursor main = new Cursor(Cursor.CROSSHAIR_CURSOR);
    		frame.setCursor(main);
     
    	}
    }

Discussions similaires

  1. Quelle API utiliser pour une appli client/serveur ?
    Par ManusDei dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 2
    Dernier message: 14/10/2010, 08h00
  2. [Génération CSV] Quelle API utiliser ?
    Par fedfil dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 21/12/2009, 16h46
  3. Réponses: 0
    Dernier message: 08/09/2008, 12h32
  4. [SOAP][JAVA] quelle api utiliser
    Par gandalf72 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 23/05/2006, 17h04
  5. [Cryptographie] Quelle api utiliser ?
    Par loupblanc dans le forum Sécurité
    Réponses: 2
    Dernier message: 03/02/2006, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo