begin process at 2012 02 16 15:47:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > DESSINE UN CAMEMBERT DANS UN PICTURE

DESSINE UN CAMEMBERT DANS UN PICTURE


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Débutant Date de création :07/09/2004 Vu / téléchargé :6 058 / 793

Auteur : cpolge

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) VB10 - CRÉER VOS PROPRES CALQUES SUR UNE IMAGE par Duke49
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN GIF ANIMÉ par Le Pivert
Source avec une capture GRAPH PHP COURBE DE CHARGE par s.defaye
Source avec Zip Source avec une capture BOULE DE CRISTAL par BLUEBIBUBBLE
VB6 - DÉPLACEMENT D'UN CONTRÔLE SUR UN SEGMENT DE DROITE DÉL... par ucfoutu

Commentaires et avis

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

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.

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




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,916 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales