GRAPHIQUE FACILE A DESSINER : CAMEMBERT ET HISTOGRAMME

Utilisateur anonyme - 8 avril 2006 à 20:08
cs_Nico52 Messages postés 35 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 11 mai 2007 - 24 avril 2010 à 13:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36961-graphique-facile-a-dessiner-camembert-et-histogramme

cs_Nico52 Messages postés 35 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 11 mai 2007
24 avril 2010 à 13:04
Bonjour,

C'est dommage le texte ne s'affiche pas ni dans l'histogramme, ni dans le camembert.
Comment faire ?
Icarius44 Messages postés 51 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 mars 2009 1
25 mai 2009 à 13:31
nbDessin c'est le nombre de graduation de ton axe des ordonnées.

"zone idéale de dessin" celle que tu veux, ce qu'il faut par contre c'est que l'appelle à la fonction passe bien les paramètres auquel tu pense.
cs_othinakiway Messages postés 30 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 juin 2009 2
25 mai 2009 à 13:03
salut,
t'as été très clair..mrc, ms il manque une petite chose: quelle est d'après toi la zone idéale de dessin, quelle est la valeur que doit prendre "nbDessin"
Icarius44 Messages postés 51 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 mars 2009 1
25 mai 2009 à 00:05
Step : err de copier coller
ensuite, i va aller de oRect.Y + oRect.Height à oRect.Y, donc i-oRect.Y va aller de 0 à oRect.Height. ensuite si tu divise cette valeur pas iUnite, en 0 ça te donne 0 et en oRect.Height ça te donne oRect.Height / ( oRect.Height / iMax ) oRect.Height*iMax/oRect.Height iMax, donc la valeur ira donc de 0 à iMax. Après tu definit ton pas comme ceci : -oRect.Height / nbDessin.

Ton problème vient peut-être du fait que tu appelle la fonction avec la mauvaise zone de dessin (trop grande)
cs_othinakiway Messages postés 30 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 juin 2009 2
23 mai 2009 à 23:26
en tt k si on enlève "step" (que je vois pas sa nécessité) le prob reste le mm
cs_othinakiway Messages postés 30 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 juin 2009 2
23 mai 2009 à 22:43
tu vx dire koi par "step" , sa génère une erreur...?????
Icarius44 Messages postés 51 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 mars 2009 1
23 mai 2009 à 00:12
en effet, petite erreur.

CType((i-oRect.Y Step)/iUnite,Integer)
cs_othinakiway Messages postés 30 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 juin 2009 2
22 mai 2009 à 23:55
pardon!..me montrer comment le calculer
cs_othinakiway Messages postés 30 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 juin 2009 2
22 mai 2009 à 23:45
il y'a tjr le mm problème, si tu veux bien me donner l'échelle val/pct ou me montrer moi comment le calculer...j'en serai ravi
Icarius44 Messages postés 51 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 mars 2009 1
19 mai 2009 à 09:34
For i = oRect.Y + oRect.Height To oRect.Y - oRect.Height / 5 Step ...
Tu sort du rectangle de dessin, c'est :
For i = oRect.Y + oRect.Height To oRect.Y Step -oRect.Height / 5

De là je ne comprend pas pourquoi tu te prend la tête avec 3 variable, "i" est suffisante.

For i = oRect.Y + oRect.Height To oRect.Y Step -oRect.Height / 5
g.DrawLine(Pens.Black, oRect.X, i, oRect.X - 4, i)
g.DrawString(CType(i/iUnite,Integer).ToString, Me.Font, Brushes.Black, oRect.X - 20, i - g.MeasureString(graduant.ToString, Me.Font).Height / 2)
Next

iUnite est un coefficient de mise à l'échelle entre le max des items et la hauteur du cadre. (calculé ligne 139)

P.S: mon cast est peut-être pas bon, je n'ai pas de compilo VB sous la main.

enjoy !
cs_othinakiway Messages postés 30 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 juin 2009 2
19 mai 2009 à 00:44
salut,
c encore moi.. j'ai réussi à graduer l'axe des ordonnées mais les graduants ne sont pas proportionnels avec les valeurs contenus dans l'histogramme.. voila le code que j'ai fait :
' graduation des ordonnées
Dim i, val, graduant As Integer
val = iMax
For i = oRect.Y + oRect.Height To oRect.Y - oRect.Height / 5 Step -oRect.Height / 5
g.DrawLine(Pens.Black, oRect.X, i, oRect.X - 4, i)
While (val Mod 5 <> 0)
val += 1
End While
g.DrawString(graduant, Me.Font, Brushes.Black, oRect.X - 20, i - g.MeasureString(graduant.ToString, Me.Font).Height / 2)
graduant += val / 5
Next
cs_othinakiway Messages postés 30 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 juin 2009 2
18 mai 2009 à 22:28
ok!, mrc bien je vais me débrouiller pour sa !
Icarius44 Messages postés 51 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 mars 2009 1
18 mai 2009 à 13:37
De mémoire il n'y en a pas, mais un petit for à la ligne 147 devrait suffir.
cs_othinakiway Messages postés 30 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 juin 2009 2
18 mai 2009 à 13:29
salut,
bah on fait comment pour ajouter les graduation au axe des ordonnées de l'histogramme!!?
cs_othinakiway Messages postés 30 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 juin 2009 2
5 mai 2009 à 19:45
Salut,
J'aime l'esprit simple chez les gents moi !, j'adore ton exemple, je te donne 8/10 .
Bonne continuité !
cs_Maxime31 Messages postés 79 Date d'inscription samedi 4 février 2006 Statut Membre Dernière intervention 28 juillet 2008
16 oct. 2007 à 20:07
Comment agrandit le camembert ?
amohammed Messages postés 7 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 1 février 2008
21 juil. 2007 à 12:52
Bonjour,

Excellent comme exemple !!

Ptite question SVP : je voudrais exporter les donner se trouvant dans un GridView vers un fichier Word sous forme d'un tableau, bien sûr, avec un camembert juste en dessous.

Que devrais-je rajouter au code ci-dessus pour le faire ?

Merci d'avance.
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
13 avril 2006 à 15:32
Exact, j'avais mal traduit.
désolé.
Icarius44 Messages postés 51 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 mars 2009 1
13 avril 2006 à 14:46
# If Not (couleur.MoveNext) Then
# couleur = LLCouleur.GetEnumerator
# couleur.MoveNext()
# End If
Je n'avance que de 1 pas : c'est si j'arrive pas à avancer je recrée un nouveau curseur que je fait ensuite avance pour qu'il pointe sur la première couleur
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
10 avril 2006 à 15:48
# If Not (couleur.MoveNext) Then
# couleur = LLCouleur.GetEnumerator
# couleur.MoveNext()
# End If
Si je ne me trompe pas, tu avance de 2 pas dans couleur non aulieu de 1 pas.
crossblade Messages postés 113 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 3 février 2007
9 avril 2006 à 12:46
ouais plutôt amusant 8/10
Utilisateur anonyme
8 avril 2006 à 20:08
Bonjour,

pas mal comme exemple ! :)

www.troxsa.info
Rejoignez-nous