Package ds.ihm.gui.render

Source Code of ds.ihm.gui.render.PanelTableauBord

package ds.ihm.gui.render;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.geom.Line2D;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

import util.BasicConvert;

import ds.moteur.voiture.VoiturePilotee;

/**Cette classe est la repr�sentation graphique du tableau de bord.
*
* @author Yannick BISIAUX
*
*/
@SuppressWarnings("serial")
public class PanelTableauBord extends JPanel {

  private static final int TABLEAU_WIDTH  = 800;
    private static final int TABLEAU_HEIGHT = 200;
   
    private VoiturePilotee voiture;
   
    private Image imageCV;
    private Image imageCT;
    private RenderingHints rh;
    private BasicStroke formatAiguille;
    private Line2D aiguilleVitesse;
    private Line2D aiguilleTourMin;
   
    private int dimensionCadrans;
    private int xVitesse;
    private int xTour;
    private int bordSuperieurCadrans;
    private int centreXVitesse;
    private int centreXTour;
    private int centreY;
    private int rayon;
 
  public PanelTableauBord(){
    super();
  }
 
  public void init(int height, int width){
    this.setPreferredSize(new Dimension(TABLEAU_WIDTH, TABLEAU_HEIGHT));
    this.setBackground(new Color(166, 166, 166));
   
    try {
      imageCV = ImageIO.read(new File("images/compteurVitesse_800x600.png"));
    } catch (IOException e) {
      System.out.println("Image compteur vitesse indisponible ou corrompue");
      e.printStackTrace();
    }
   
    try {
      imageCT = ImageIO.read(new File("images/compteTour_800x600.png"));
    } catch (IOException e) {
      System.out.println("Image compte tour indisponible ou corrompue");
      e.printStackTrace();
    }
   
    //Calcul de l'emplacement des �l�ments
    dimensionCadrans = (19*height)/20;
    xVitesse = width/2 - height/10 - dimensionCadrans;
    xTour = width/2 + height/10;
    bordSuperieurCadrans = height/40;
    centreXVitesse = xVitesse + dimensionCadrans/2;
    centreXTour = xTour + dimensionCadrans/2;
      centreY = height/2;
    rayon = (int)(height/2.5);
   
    //Pr�paration des �l�ments graphiques
    rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    formatAiguille = new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
    aiguilleVitesse = new Line2D.Double(centreXVitesse, centreY, centreXVitesse, centreY - rayon);
    aiguilleTourMin = new Line2D.Double(centreXTour, centreY, centreXTour, centreY - rayon);
  }
 
  /**Cette m�thode permet de faire repr�senter au tableau de bord l'�tat actuel de la voiture pilot�e.
   *
   * @param voiture
   */
  public void afficherVoiture(VoiturePilotee voiture){
    this.voiture = voiture;
    this.repaint();
  }
 
  public void paint(Graphics g){
    super.paint(g);
    Graphics2D g2d = (Graphics2D)g;
   
    double vitesseKmh = 0;
    double nbTour = 0;
   
    if (voiture != null){
      vitesseKmh = BasicConvert.msToKmh((voiture.getMecanique().getVitesse()));
      nbTour = voiture.getMoteur().getVitesseRotation();
      g2d.drawString(Integer.toString((int)vitesseKmh) + " km/h", 20, 20);
      g2d.drawString(Integer.toString(voiture.getMoteur().getNumeroVitesse()), 80, 20);
    }
   
    if(imageCV != null){
      g2d.drawImage(imageCV, xVitesse, bordSuperieurCadrans, dimensionCadrans, dimensionCadrans, null);
      g2d.drawImage(imageCT, xTour, bordSuperieurCadrans, dimensionCadrans, dimensionCadrans, null);
    }
   
    g2d.setRenderingHints(rh);
    g2d.setColor(Color.WHITE);
   
    double angleAiguille = 0.0036*(vitesseKmh-100)*2*Math.PI;
    AffineTransform saveAT = g2d.getTransform();
    g2d.transform(AffineTransform.getRotateInstance(angleAiguille, centreXVitesse, centreY));
    g2d.setStroke(formatAiguille);
    g2d.draw(aiguilleVitesse);
    g2d.setTransform(saveAT);
    g2d.transform(AffineTransform.getRotateInstance(0.00012*(nbTour-3000)*2*Math.PI, centreXTour, centreY));
    g2d.draw(aiguilleTourMin);
    g2d.setTransform(saveAT);
  }
}
TOP

Related Classes of ds.ihm.gui.render.PanelTableauBord

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.