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 :

élément graphique non élémentaire : jauge de vie


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut élément graphique non élémentaire : jauge de vie
    Bonjour,

    Je voudrais réaliser une jauge de vie.
    Pour l'instant j'ai déjà un code qui tourne bien avec une forme qui se vide quand une valeur chute, mais j'aimerais complexifier la chose avec un dégradé.

    Alors voilà ma question :

    qu'elle est la méthode la plus élégante pour remplir une forme non trivial par un dégradé de couleur?

    Pour l'instant,
    j'envisage de réaliser un dégradé de couleur sur un pavé puis de venir superposer une forme dessus, et de virer les couleurs qui sortent de la forme, mais ça m'a l'air super crade comme code.....


    Au fait est ce qu'on peut tracer des lignes entre des points? et non pas des coordonnées?


    MERCI

  2. #2
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    voilà mon 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
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    import java.awt.Color;
    import java.awt.Graphics;
     
    import java.awt.Polygon;
    import java.awt.geom.Point2D;
     
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class Jauge extends JPanel{
     
     
    	public static final int DIM_H = 500; // Largeur en pixels de la fenetre
    	public static final int DIM_V =500; // Hauteur en pixels de la fenetre
    	private static final long serialVersionUID = 1L;
    	public static final int MAX=16;
    	private int x;
    	private int y;
    	private int valeur;
     
     
    	public Jauge(int x,int y, int valeur){
    		this.x=x;
    		this.y=y;
    		this.valeur=valeur;
    	}
    	public void setJauge(int valeur){
    		this.valeur=valeur;
    	}
     
     
    	public void paint( Graphics g ){
    		super.paint(g);
    		g.setColor( Color.white );
    		g.fillRect( 0, 0,Jauge.DIM_H,Jauge.DIM_V );
     
    		g.setColor( Color.green );
     
    		Point2D.Double A=new Point2D.Double (x+5,y);
    		Point2D.Double B=new Point2D.Double (x,y+20);
    		Point2D.Double C=new Point2D.Double (x+10,y+20);
    		Point2D.Double D=new Point2D.Double (x,y+200);
    		Point2D.Double E=new Point2D.Double (x+10,y+200);
    		Point2D.Double F=new Point2D.Double (x-5,y+205);
    		Point2D.Double G=new Point2D.Double (x+15,y+205);
    		Point2D.Double H=new Point2D.Double (x+5,y+203);
    		Point2D.Double I=new Point2D.Double (x+5,y+208);
    		Point2D.Double J=new Point2D.Double (x+5,y+225);
     
    		Polygon PartieJaugeHaute=new Polygon();
    		PartieJaugeHaute.addPoint((int)A.x,(int)A.y);
    		PartieJaugeHaute.addPoint((int)B.x,(int)B.y);
    		PartieJaugeHaute.addPoint((int)D.x,(int)D.y);
    		PartieJaugeHaute.addPoint((int)F.x,(int)F.y);
    		PartieJaugeHaute.addPoint((int)I.x,(int)I.y);
    		PartieJaugeHaute.addPoint((int)G.x,(int)G.y);
    		PartieJaugeHaute.addPoint((int)E.x,(int)E.y);
    		PartieJaugeHaute.addPoint((int)C.x,(int)C.y);
    		g.fillPolygon(PartieJaugeHaute);
     
    		Polygon PartieJaugeBasse=new Polygon();
    		PartieJaugeBasse.addPoint((int)H.x,(int)H.y);
    		PartieJaugeBasse.addPoint((int)I.x,(int)I.y);
    		PartieJaugeBasse.addPoint((int)F.x,(int)F.y);
    		PartieJaugeBasse.addPoint((int)J.x,(int)J.y);
    		PartieJaugeBasse.addPoint((int)G.x,(int)G.y);
    		PartieJaugeBasse.addPoint((int)I.x,(int)I.y);
    		PartieJaugeBasse.addPoint((int)J.x,(int)J.y);
    		PartieJaugeBasse.addPoint((int)H.x,(int)H.y);
    		g.fillPolygon(PartieJaugeBasse);
     
    		g.setColor(Color.black);
    		g.drawPolygon(PartieJaugeBasse);
    		g.drawPolygon(PartieJaugeHaute);
     
    		Polygon partieDeJaugeVide = new Polygon();
    		g.setColor(Color.white);
     
    		Point2D.Double H1=new Point2D.Double(0,0);
    		Point2D.Double H2=new Point2D.Double(0,0);
    		int altitude=y+20;
    		switch( this.valeur ){
     
    		case 16 : break;
    		case 15 :
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 14 :
    			H1.setLocation((int)B.x,altitude+15);
    			H2.setLocation((int)C.x,altitude+15);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 13 :
    			H1.setLocation((int)B.x,altitude+30);
    			H2.setLocation((int)C.x,altitude+30);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 12 :
    			H1.setLocation((int)B.x,altitude+45);
    			H2.setLocation((int)C.x,altitude+45);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 11 :
    			H1.setLocation((int)B.x,altitude+60);
    			H2.setLocation((int)C.x,altitude+60);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 10 :
    			H1.setLocation((int)B.x,altitude+75);
    			H2.setLocation((int)C.x,altitude+75);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 9 :
    			H1.setLocation((int)B.x,altitude+90);
    			H2.setLocation((int)C.x,altitude+90);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 8 :
    			H1.setLocation((int)B.x,altitude+105);
    			H2.setLocation((int)C.x,altitude+105);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 7 :
    			H1.setLocation((int)B.x,altitude+120);
    			H2.setLocation((int)C.x,altitude+120);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 6 :
    			H1.setLocation((int)B.x,altitude+135);
    			H2.setLocation((int)C.x,altitude+135);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 5 :
    			H1.setLocation((int)B.x,altitude+150);
    			H2.setLocation((int)C.x,altitude+150);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 4 :
    			H1.setLocation((int)B.x,altitude+165);
    			H2.setLocation((int)C.x,altitude+165);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 3 :
    			H1.setLocation((int)B.x,altitude+180);
    			H2.setLocation((int)C.x,altitude+180);
    			partieDeJaugeVide.addPoint((int)A.x,(int)A.y);
    			partieDeJaugeVide.addPoint((int)B.x,(int)B.y);
    			partieDeJaugeVide.addPoint((int)H1.x,(int)H1.y);
    			partieDeJaugeVide.addPoint((int)H2.x,(int)H2.y);
    			partieDeJaugeVide.addPoint((int)C.x,(int)C.y);
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 2 :
     
    			partieDeJaugeVide=PartieJaugeHaute;
    			g.fillPolygon(partieDeJaugeVide);break;
    		case 1 :
    			partieDeJaugeVide=PartieJaugeHaute;
    			g.fillPolygon(partieDeJaugeVide);
    			g.setColor(Color.red);
    			g.fillPolygon(PartieJaugeBasse);break;
    		case 0 :
    			g.setColor( Color.white );
    			g.fillRect( 0, 0,Jauge.DIM_H,Jauge.DIM_V );
    			g.setColor(Color.black);
    			g.drawPolygon(PartieJaugeBasse);
    			g.drawPolygon(PartieJaugeHaute);break;
     
    		}
    		g.setColor(Color.black);
    		g.drawPolygon(partieDeJaugeVide);
    		g.drawPolygon(PartieJaugeBasse);
    		g.dispose();
     
    	}
     
    	public String toString(){
    		String st ="";
    		return st;
    	}
     
    	public static void main(String[] args){
    		JFrame f=new JFrame();
    		f.setSize(Jauge.DIM_H,Jauge.DIM_V);
    		f.setTitle("Jauge");
    		f.setBackground(Color.WHITE);
     
     
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		//Jauge jauge= new Jauge(50,50,16);
    		//Jauge jauge= new Jauge(50,50,15);
    		//Jauge jauge= new Jauge(50,50,14);
    		//Jauge jauge= new Jauge(50,50,13);
    		//Jauge jauge= new Jauge(50,50,12);
    		//Jauge jauge= new Jauge(50,50,11);
    		//Jauge jauge= new Jauge(50,50,10);
    		//Jauge jauge= new Jauge(50,50,9);
    		//Jauge jauge= new Jauge(50,50,8);
    		//Jauge jauge= new Jauge(50,50,7);
    		//Jauge jauge= new Jauge(50,50,6);
    		//Jauge jauge= new Jauge(50,50,5);
    		//Jauge jauge= new Jauge(50,50,4);
    		//Jauge jauge= new Jauge(50,50,3);
    		//Jauge jauge= new Jauge(50,50,2);
    		//Jauge jauge= new Jauge(50,50,1);
    		Jauge jauge= new Jauge(50,50,0);
    		f.getContentPane().add(jauge);
    		f.setVisible(true);
     
    	}
     
     
     
    	public class Degrade extends java.applet.Applet{
    		public void paint(Graphics g){
    			int i, j;
    			for(i=0;i<256;i++){
    				for(j=0; j< 256; j++){
    					g.setColor(new Color(i, j, j)); //met la couleur que doit etre le text setColor(); et dans setColor on fait new Color(int, int, int); pour definir une nouvelle couleur a partir des valeur RGB (RedGreenBlue)
    					g.drawLine(i*2,j,(i*2)+i,j); //dessine une ligne avec la couleur
    				}
    			}
    		}
    	} 
    }

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    Est ce qu'il est possible de réécrire fillPolygon pour avoir un dégradé de couleur suivant les y?

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    GradientPaint

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Et plus precisement LinearGradientPaint
    Oui la quand, c'est un peu le syndrome du mec qui n'a pas ete fouiller dans la doc de l'API ni dans les exemples fournis dans le JDK .
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Citation Envoyé par bouye Voir le message
    Et plus precisement LinearGradientPaint
    Oui la quand, c'est un peu le syndrome du mec qui n'a pas ete fouiller dans la doc de l'API ni dans les exemples fournis dans le JDK .
    Ou de celui qui n'est tout simplement pas encore passé à java 6...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Graphique non chargé
    Par Flashget dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 15/03/2007, 13h51
  2. Effacer des éléments graphiques
    Par benjiprog dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 08/09/2006, 13h44
  3. [Access 2k] PB superposition d'éléments graphiques
    Par elgringo2007 dans le forum Access
    Réponses: 2
    Dernier message: 20/06/2006, 17h06
  4. [CSS] Apparence des éléments graphiques (boutons, ...)
    Par oursblanc dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/02/2006, 20h01
  5. Application graphique non fenétrée
    Par drachenkiller dans le forum Interfaces Graphiques en Java
    Réponses: 16
    Dernier message: 15/11/2005, 11h50

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