begin process at 2008 07 06 02:49:13
1 205 441 membres
21 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DESSINE UN CAMEMBERT DANS UN PICTURE


Information sur la source

Catégorie :Graphique Niveau : Débutant Date de création : 07/09/2004 Vu / téléchargé: 4 162 / 639

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

dessine un camembert dans un picture en fonction d'un tableau de parametre
chaque part du camenbert est un pourcentage du disque entier

Source

  • ' dans la feuille avec une picture qui recoit le camembert
  • Option Explicit
  • Sub rempli_et_affiche_camembert()
  • Dim lc As Integer
  • Dim maxcalc As Integer
  • 'mon type camembert qui contient
  • ' un tableau des pourcentages de chaque par
  • ' un tableau des couleurs de chaque part
  • ' le nombre de part maximum
  • Dim cam As typ_camembert
  • cam.nb_max = (Val(Text2.Text) - 1) Mod Max_camembert + 1
  • maxcalc = 0
  • For lc = 1 To cam.nb_max
  • cam.T_p(lc) = Val(Text1(lc - 1).Text)
  • maxcalc = maxcalc + cam.T_p(lc)
  • Next lc
  • cam.T_c(1) = vbRed
  • cam.T_c(2) = vbYellow
  • cam.T_c(3) = vbGreen
  • cam.T_c(4) = vbBlue
  • cam.T_c(5) = vbCyan
  • cam.T_c(6) = vbMagenta
  • cam.T_c(7) = vbWhite
  • cam.T_c(8) = vbBlack
  • Call affiche_camembert(Picture1, cam)
  • Me.Label1.Caption = "global " & maxcalc & " %"
  • If maxcalc > 100 Then Me.Label1.Caption = "erreur depassement 100% "
  • End Sub
  • Private Sub Command1_Click()
  • Call rempli_et_affiche_camembert
  • End Sub
  • Private Sub Form_Load()
  • Call rempli_et_affiche_camembert
  • End Sub
  • ' dans module camembert.bas
  • Option Explicit
  • Public Const Max_camembert = 8
  • Type typ_camembert
  • T_p(1 To Max_camembert) As Integer ' pourcentage de chaque part
  • T_c(1 To Max_camembert) As Long ' couleur
  • nb_max As Integer ' nombre max de part a afficher
  • End Type
  • Sub affiche_camembert(camembert As PictureBox, tab_p As typ_camembert)
  • Const conPI = 3.14159265359
  • Dim lc As Integer
  • Dim Pc(0 To Max_camembert) As Single
  • ' calcule les angles attention sens anti horaire debut a 90°
  • Pc(0) = -0.00001
  • For lc = 1 To tab_p.nb_max
  • Pc(lc) = tab_p.T_p(lc) Mod 100 ' pour ne pas depasser
  • Pc(lc) = -(2 * conPI) * Pc(lc) / 100 + Pc(lc - 1) - Pc(0)
  • If Pc(lc) > Pc(0) Then Pc(lc) = Pc(0)
  • If Pc(lc) < -(2 * conPI) Then
  • Pc(lc) = -(2 * conPI)
  • End If
  • 'Form1.Label1(lc).Caption = Format(Pc(lc), "##,##0.00000")
  • Next lc
  • camembert.Cls
  • camembert.AutoRedraw = True
  • camembert.FillStyle = 0 ' Fill pie slice.
  • For lc = 1 To tab_p.nb_max
  • camembert.FillColor = tab_p.T_c(lc) ' couleur remplissage
  • If tab_p.T_p(lc) >= 1 Then camembert.Circle (camembert.ScaleWidth / 2, camembert.ScaleHeight / 2), (camembert.ScaleHeight * 0.45), tab_p.T_c(lc), Pc(lc - 1), Pc(lc)
  • Next lc ' Draw pie slice within circle.
  • End Sub
' dans la feuille avec une picture qui recoit le camembert
Option Explicit

Sub rempli_et_affiche_camembert()
 Dim lc As Integer
 Dim maxcalc As Integer
'mon type camembert  qui contient
' un tableau des pourcentages de chaque par
' un tableau des couleurs de chaque part
' le nombre de part maximum
Dim cam As typ_camembert
 cam.nb_max = (Val(Text2.Text) - 1) Mod Max_camembert + 1
 maxcalc = 0
 For lc = 1 To cam.nb_max
  cam.T_p(lc) = Val(Text1(lc - 1).Text)
  maxcalc = maxcalc + cam.T_p(lc)
 Next lc
 cam.T_c(1) = vbRed
 cam.T_c(2) = vbYellow
 cam.T_c(3) = vbGreen
 cam.T_c(4) = vbBlue
 cam.T_c(5) = vbCyan
 cam.T_c(6) = vbMagenta
 cam.T_c(7) = vbWhite
 cam.T_c(8) = vbBlack
 
 Call affiche_camembert(Picture1, cam)
 Me.Label1.Caption = "global " & maxcalc & " %"
 If maxcalc > 100 Then Me.Label1.Caption = "erreur depassement 100% "
 End Sub

Private Sub Command1_Click()
Call rempli_et_affiche_camembert

End Sub


Private Sub Form_Load()
Call rempli_et_affiche_camembert
End Sub

' dans module camembert.bas
Option Explicit

Public Const Max_camembert = 8

Type typ_camembert
    T_p(1 To Max_camembert) As Integer    ' pourcentage de chaque part
    T_c(1 To Max_camembert) As Long ' couleur
    nb_max As Integer ' nombre max de part a afficher
End Type


Sub affiche_camembert(camembert As PictureBox, tab_p As typ_camembert)

Const conPI = 3.14159265359
    Dim lc As Integer
    Dim Pc(0 To Max_camembert) As Single
    
    ' calcule les angles attention sens anti horaire debut a 90°
    Pc(0) = -0.00001
    For lc = 1 To tab_p.nb_max
        Pc(lc) = tab_p.T_p(lc) Mod 100  ' pour ne pas depasser
        Pc(lc) = -(2 * conPI) * Pc(lc) / 100 + Pc(lc - 1) - Pc(0)
        If Pc(lc) > Pc(0) Then Pc(lc) = Pc(0)
        If Pc(lc) < -(2 * conPI) Then
            Pc(lc) = -(2 * conPI)
        End If
        'Form1.Label1(lc).Caption = Format(Pc(lc), "##,##0.00000")
    Next lc
    camembert.Cls
    camembert.AutoRedraw = True
    camembert.FillStyle = 0                     ' Fill pie slice.
    For lc = 1 To tab_p.nb_max
        camembert.FillColor = tab_p.T_c(lc) ' couleur remplissage
        If tab_p.T_p(lc) >= 1 Then camembert.Circle (camembert.ScaleWidth / 2, camembert.ScaleHeight / 2), (camembert.ScaleHeight * 0.45), tab_p.T_c(lc), Pc(lc - 1), Pc(lc)
    Next lc '  Draw pie slice within circle.
    
End Sub
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de ITALIA le 07/09/2004 17:34:53

    Des valeurs contenues dans un fichier texte ...sans limites de nb de valeurs aurait été mieux.
    Avec des couleurs prises au hasard.

    8/10

  • signaler à un administrateur
    Commentaire de econs le 07/09/2004 22:21:30 administrateur CS

    Ca a le mérite d'être propre. Mais effectivement, pour suivre Italia, je dirai également que ce camembert n'est pas très paramétrable (couleurs, nombre de parts, ... )

    Regarde le contrôle MsChart. Il permet de faire des camemberts avec un nombre de parts (presque) infini.

  • signaler à un administrateur
    Commentaire de cpolge le 08/09/2004 18:00:23

    le nombre max de part n'est pas parametrable
    il faut le fixer dans le code
    mais en cours d'execution on peut prendre en compte de 0 à  nb_max pour afficher
    pour les couleurs il faut remplir le champs  T_c avec la couleur de son choix par part de camembert

Ajouter un commentaire

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS