JFreeChart mettre un image comme type de point

Résolu
cs_xxLoloxx Messages postés 9 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 10 juillet 2012 - 3 oct. 2011 à 10:30
cs_xxLoloxx Messages postés 9 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 10 juillet 2012 - 4 oct. 2011 à 10:34
Bonjour à toutes et tous,

Voilà un petit bout de temps que je suis membre de ce site qui m'aide à résoudre mes problèmes. Habituellement, j'arrivais à les résoudre en cherchant dans les sujets existants voir dans les morceaux de codes développés par les membres mais aujourd'hui ce n'est pas le cas hélas.

Je suis actuellement en train de développer une application où j'aimerais arriver à obtenir une barre de suivi comme sur le site suivant (http://www.sports.fr/football/directs/2012/ligue-1/138591/evian-thonon-caen.html). A savoir avoir une barre et des icones sur celle ci afin de représenter des événements qui y seront survenus.

Jusqu'à maintenant j'obtiens ceci:


Il ne me manquerait plus qu'à transformer les points bleus, rouges, verts par des images de mon choix.
Je ne trouve rien sur le net pour m'aider dans cette tâche. Est ce tout simplement possible ?

Je vous remercie par avance.
Bonne journée

4 réponses

Utilisateur anonyme
3 oct. 2011 à 14:48
Bonjour

Essayez de surcharger la méthode XYLineAndShapeRenderer.drawSecondaryPass() pour faire ça. Vous devriez poser votre question sur le forum de JFreeChart, vous auriez plus de chances d'avoir des réponses. Cordialement








T.U.E.R (First Person Shooter créé par Julien Gouesse)
3
cs_xxLoloxx Messages postés 9 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 10 juillet 2012 2
4 oct. 2011 à 09:14
Merci Gouessej ;)

Je n'ai pas eu besoin d'aller sur leur forum car tu m'as donné la réponse que je souhaitais.
Tout marche très bien !

Pour ceux qui souhaiterais avoir la réponse, je poste le code. Il n'est pas commenté mais reste assez implicite. J'ai défini cette méthode dans une classe CustomXYLineAndShapeRenderer qui hérite de XYLineAndShapeRenderer :

protected void drawSecondaryPass(Graphics2D g2, XYPlot plot,
XYDataset dataset, int pass, int series, int item,
ValueAxis domainAxis, Rectangle2D dataArea, ValueAxis rangeAxis,
CrosshairState crosshairState, EntityCollection entities) {

double x1 = dataset.getXValue(series, item);
double y1 = dataset.getYValue(series, item);
if (Double.isNaN(y1) || Double.isNaN(x1)) {
return;
}

RectangleEdge xAxisLocation = plot.getDomainAxisEdge();
RectangleEdge yAxisLocation = plot.getRangeAxisEdge();
double transX1 = domainAxis.valueToJava2D(x1, dataArea, xAxisLocation);
double transY1 = rangeAxis.valueToJava2D(y1, dataArea, yAxisLocation);
Image image = null;
String imgStr;
if (series == ModeleGraphiqueStatic.SERIE_ARRET_TACHE)
imgStr = Variable.IMG_GRAPHIQUE_BARRE_CARTON_ROUGE;
else if (series == ModeleGraphiqueStatic.SERIE_REDEMERAGE_CHRONOS)
imgStr = Variable.IMG_GRAPHIQUE_BARRE_REMPLACEMENT;
else if (series == ModeleGraphiqueStatic.SERIE_SAUT_CHRONOS)
imgStr = Variable.IMG_GRAPHIQUE_BARRE_CARTON_JAUNE;
else
imgStr = Variable.IMG_GRAPHIQUE_BARRE_SIFFLET;

try {
image = ImageIO.read((getClass().getResource(imgStr)));
} catch (IOException e) {
e.printStackTrace();
}

g2.drawImage(image, (int)transY1, (int)transX1-6, null);
}
0
Utilisateur anonyme
4 oct. 2011 à 10:20
Bonjour

Je suis content d'avoir pu vous aider et je vous remercie d'avoir posté un exemple de code illustrant ma suggestion. Il pourrait être amélioré de sorte que l'image soit redimensionnée pour rentrer pile dans l'aire rectangulaire et il serait préférable de tester si la variable "image" est à null (si le chargement de l'image a échoué).










T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
cs_xxLoloxx Messages postés 9 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 10 juillet 2012 2
4 oct. 2011 à 10:34
Bonjour,

Je suis tout à fait d'accord sur vos remarques.
Le code posté ici reste à titre indicatif
0
Rejoignez-nous