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

Affichage des résultats du sondage: Lequel des deux outils de reporting suivants s'intègre le mieux à NetBeans IDE?

Votants
0. Vous ne pouvez pas participer à ce sondage.
  • Birt

    0 0%
  • JasperReports

    0 0%
Graphisme Java Discussion :

Représenter le niveau d'un liquide


Sujet :

Graphisme Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Par défaut Représenter le niveau d'un liquide
    Bonjour à tous,
    Je développe présentement une application de gestion de station service et je dois représenter le stock de carburant dans une cuve. J’aimerais créer une fonction qui prend en paramètres :
    capacite_cuve : volume max de la cuve ;
    volume_min : volume mini à partir de laquelle une alerte est générée ;
    volume_restant : niveau du produit ;
    nom_cuve : le nom de la cuve ;
    couleur_produit : couleur du produit
    puis affiche le stock. La figure ci-jointe représente exactement ce que je dois réaliser.
    A noter que : volume_min < volume_restant < capacite_cuve

    J'ai regardé du côté de l'api 2D, notamment avec la fonction Arc2D.CHORD mais rien n'y fait. Restant disponible pour toute information complémentaire.

    Merci d’avance.
    Images attachées Images attachées  

  2. #2
    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
    Si tu n'es pas bloqué sur l'apparence à obtenir, tu peux toujours te diriger sur ce projet: SteelSeries qui propose des jauges vachement bien foutues et qui plus est fort jolies à voir.

    Je subodore de plus qu'il doit être possible d'en customiser une ronde pour qu'elle affiche un niveau vertical

    Le blog du développeur de cette lib: http://harmoniccode.blogspot.com/

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Qu'est ce qui te pose problème dans le rendu de ton niveau ?

    Il s'agit juste de la hauteur du rectangle vert, ce qui est plutot facile à caculer compte tenu des paramètre fournis, avec une simple règle de 3.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    largeur = diamètre;
    hauteur = diamètre * (volume actuel - volume min) / (volume max - volume min);
    Nom : réservoir.png
Affichages : 79
Taille : 19,4 Ko

    Ensuite ce même rectangle est clippé par un disque, et on dessine un cercle noir par dessus et voilà ! (après pour faire joli, on peut utiliser des gradients et des formes suplémentaires ).

    Après bien sur la couleur varie en fonction du volume actuel.

    Pour le rendu et le positionnement du label il y a toutes les méthodes qu'il faut pour calculer la position correct en fonction du texte dans la classe Font (getLineMetrics() et getStringBounds()). Après il faut se sounir que le point de référence lors de l'écriture d'un texte n'est pas le coin en haut à gauche mais la base ligne à gauche (dans le cas d'une écriture occidentale) avec l'ascent = la hauteur de caractère audessus de la base line et le descent = la hauteur de charactère sous la baseline pour les quelques lettres qui vont endessous (fgjpqyz).
    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

  4. #4
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Par défaut
    Bonjour,

    merci pour vos réponses.
    sinok:

    j'ai suivi les liens ci-dessus mais j'avoue vraiment que je ne m'y retrouve pas dedans. J'ai pas un niveau expert en graphisme java.

    bouye:

    Au fait, ce qui m'embête le plus c'est comment faire en sorte que les parties clippées comme le montre ton graphique ne soient pas du tout visibles.

    merci encore.

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Euh..... c'est le principe du clip justement...
    le genre de truc qu'on peut faire avec graphics.setClip(Shape) par exemple !
    Bon après c'est pas forcément la meilleure méthode : les formes clippées ne sont pas anti-aliasées mais pour ce que tu cherches à faire c'est largement suffisant je pense.

    Donc :
    • sauvegarder le clip initial,
    • clipper le Graphics avec le cercle,
    • peindre le rectangle en vert,
    • restaurer le clip initial,
    • dessiner le cercle en noir.
    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
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Par défaut
    Merci bouye, je vais essayer ça et te tiendrais au courant de mon avancement.

    A+

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/12/2014, 21h15
  2. Représentation image en niveau de gris par Photoshop
    Par Space23 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 15/10/2013, 10h03
  3. Traitement d'image : mesure de niveau (liquide)
    Par zicos dans le forum Traitement d'images
    Réponses: 11
    Dernier message: 18/11/2008, 21h04
  4. Creer un role au niveau server
    Par Mouse dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 01/05/2003, 15h56
  5. Elément de niveau supérieur dans un menu
    Par pascalT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 27/03/2003, 09h39

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