cs_tigroux
Messages postés105Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention22 octobre 2008
-
15 juil. 2005 à 11:13
cs_tigroux
Messages postés105Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention22 octobre 2008
-
19 juil. 2005 à 09:01
Salut,
Voila je veux dessinez un graphe qui se dessine qu'une seul fois au démarrage. Mais le probleme c'est que si je ne fais pas la repaint à la fin, l'affichage de dessinMois ne se fait pas. Je comprends pas pourquoi. Et si je fais le repaint et bien le paint boucle et cela ralenti mon application, si vous avez des idées je veux bien, merci.
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 16 juil. 2005 à 15:14
tu ne doi surtou pas faire ton repaint() dans la methode paint()...
si c est un swing que tu surcharge tu devrai plutot surcharger paintComponent()...
et apppeler la methode super en debut ...
cs_tigroux
Messages postés105Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention22 octobre 200816 18 juil. 2005 à 08:42
J'avais déjà essayé avec le paintComponent mais pas avec le super. Mais cela ne change rien la dernière ligne ne s'affiche pas.
Mais ma dernière fonction est un peu particulière :
private void dessinMois(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
AffineTransform at = new AffineTransform();
at.setToRotation(Math.PI/2.0);
g2d.setTransform(at);
int i;
for (i = 0; i < tabMois.length; i++) {
g.drawString(tabMois[i], (int) d.getHeight() - (yFin-5), -(xDebut + i*tailleMois));
}
}
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 18 juil. 2005 à 13:38
public void paint(Graphics g) {
super.paint( g ); cette ligne est fortement conseillé
dessinBarreAnnee(g, 1, annee1);
dessinBarreAnnee(g, 2, annee2);
dessinBarreAnnee(g, 3, annee3);
dessinBarreAnnee(g, 4, annee4);
dessinerLegende(g, annee);
dessinMois(g);
this.repaint(); Cette ligne ne doit jamais etre ecrite ... il est evident que tu part en boucle
}
de plus utilise plutot
protected void paintComponent( Graphics g )
{
super.paintComponent( g );
dessinBarreAnnee(g, 1, annee1);
dessinBarreAnnee(g, 2, annee2);
dessinBarreAnnee(g, 3, annee3);
dessinBarreAnnee(g, 4, annee4);
dessinerLegende(g, annee);
dessinMois(g);
}
ensuite :
private void dessinMois(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
AffineTransform at = new AffineTransform();
at.setToRotation(Math.PI/2.0);
g2d.setTransform(at);
int i;
for (i = 0; i < tabMois.length; i++) {
g2d.drawString(tabMois[i], (int) d.getHeight() - (yFin-5), -(xDebut + i*tailleMois));
}
restituer la transfo ici
}
quand on initialise une transformation il faut prendre l habitude de restituer l ancienne situation ici tu ne restitu pas la transformation ...
et il faut savoir que toute les transfo ce font a partir du coin en haut a gauche du component ...
dc il est probableque tu ecrive tes string en dehors !!!!
et si tu transforme g2d ne dessine pas a partir de g ;o) autrement la transfo n est pas efective pour ce context ... ;o)
tu devrai donc apliquer aussi une translation ... ;o)
;o) regarde j ai fourni plusieurs example d utilisation des transfo (ds mes sample de jeux) ;o)
cs_tigroux
Messages postés105Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention22 octobre 200816 18 juil. 2005 à 14:28
Même pas le probleme reste toujours la. J'avait pas enlever le repaint(). Toujours le même bug alors.
(pour le g2d, j'avais essayé avec les deux ca changer rien).
cs_tigroux
Messages postés105Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention22 octobre 200816 18 juil. 2005 à 17:22
ben c bon j'ai reussi, quoi plus ou moins, j'ai mis le texte droit et la ca marche tanpis, c'est un peu moins beau mais au moins c'est fini
Merci bcp pour ton aide.
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 19 juil. 2005 à 08:48
c dommage ;o) dc si ca marche droit ... il est presqu sur que tu avai oublier une translation .... et que tu afficher tes text en dehors .... as tu bien lu mes post precedents !!?? ...
cs_tigroux
Messages postés105Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention22 octobre 200816 19 juil. 2005 à 09:01
Oui j'ai bien lu. J'afficher correctement les mots si je faisais le repaint juste apres mais par contre ca boucler
Je vois pas trop pourquoi mais bon
En plus je peux pas te filer le prog car il travail avec des fichiers sur le serveur et donc tu pourras jamais le lancer pour tester.