Soyez le premier à donner votre avis sur cette source.
Snippet vu 13 461 fois - Téléchargée 38 fois
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load dim base,title dim imagex As Integer,imagey As Integer dim rectx As Integer,recty As Integer dim axeXg As Integer,axeXh As Integer,axeXe As Integer,axeXl As Integer dim axeYg As Integer,axeYh As Integer,axeYe As Integer,axeYl As Integer dim Ech,Esp, Ep as long dim PEYy,PEYx,PEXy,PEXx as integer dim LX,LY as string dim taille as integer 'Je recupére le form pour savoir qu'elle est ma taille ' voir plus loin pour comprendre taille=Request.Form("Ta") 'Grace à une selection prcedente je peux choisir ma base 'base=mabase base=Request.Form("chbase") 'Taille de L'image (550x480 proportion par defaut) ' 4 choix possible 'Choix1 if taille=1 then imagex= 480 imagey= 300 end if 'Choix2 if taille=2 then imagex= 550 imagey= 480 end if 'Choix3 if taille=3 then imagex= 640 imagey= 480 end if 'Choix4 if taille=4 then imagex= 800 imagey= 600 end if 'Encadrement rectx=imagex-1 recty=imagey-1 'Titre title="Fabrication 2002" 'Axe des absissce & ordonné 'X 'position par rapport à la gauche du cadre (Depart à gauche) axeXg=10 'position par rapport au haut du cadre (Depart du Haut) axeXh=imagey-30 ' longueur du trait x axeXl=imagex-30 ' epaisseur du trait x axeXe=2 'Y 'position par rapport à la gauche du cadre (Depart à gauche) axeYg=10 'position par rapport au haut du cadre (Depart du Haut) axeYh=50 ' Epaisseur du trait y axeYe=2 ' Hauteur du trait y axeYl=imagey-axeYh-30 'Echelle Ech= 100000 'position legende axe des Y PEYy=axeYg+10 PEYx=axeYh 'position legende axe des x PEXy=axeXl PEXx=axeXh-20 'nom axe X LX="Mois" 'Nom axe Y LY="Nb Planches" 'reglage histogramme 'espace entre les barres (proportionel à la taille) Esp=imagex*0.072 'largeur des barres (proportionel à la taille) Ep=imagex*0.018 Dim DBobjConn As OleDBConnection DBobjConn = New OleDBConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Request.MapPath(base)) DBobjConn.Open() dim mois(11) as string Dim a As Integer mois(0)="janvier" mois(1)="février" mois(2)="mars" mois(3)="avril" mois(4)="mai" mois(5)="juin" mois(6)="juillet" mois(7)="août" mois(8)="septembre" mois(9)="octobre" mois(10)="novembre" mois(11)="décembre" Dim i As Integer Dim MaBitMap As New Bitmap(imagex,imagey) ' On créé l'image Dim MonObjGfx As Graphics Dim MesValeurs(11) As long Dim MesValeurs2(11) As long Dim Moyenne,moyenne2 As long Dim compteur as integer compteur=0 for a = 0 to 11 'ma requete ici donne le resultat du nombre de planches fabriquée par mois Dim ODDA_ModifTable As New OleDBCommand("SELECT Sum(fabrications.Planches) AS SommeDePlanches FROM fabrications GROUP BY fabrications.Fmois HAVING (((fabrications.Fmois) like '" & mois(a) & "'));",dbobjconn) Dim malecture AS OleDbDataReader malecture=ODDA_ModifTable.ExecuteReader do until not malecture.read MesValeurs(a)=malecture("SommeDePlanches") loop malecture.Close next DBobjConn.Dispose Dim MesDescriptions(11) As String MesDescriptions(0)="Jan" MesDescriptions(1)="fev" MesDescriptions(2)="Mar" MesDescriptions(3)="Avr" MesDescriptions(4)="Mai" MesDescriptions(5)="Jun" MesDescriptions(6)="Jui" MesDescriptions(7)="Aou" MesDescriptions(8)="Sep" MesDescriptions(9)="Oct" MesDescriptions(10)="Nov" MesDescriptions(11)="Dec" MonObjGfx = Graphics.FromImage(MaBitMap) ' On met un fond blanc MonObjGfx.Clear(Color.White) ' On trace un rectangle tout autour de notre image MonObjGfx.DrawRectangle(Pens.Black, 0, 0, rectx, recty) ' On donne titre à notre graphique MonObjGfx.DrawString(title, New Font("Verdana", 16, FontStyle.Bold), Brushes.Black, New PointF(5, 5)) ' On trace l'axe des absisse et ordonné MonObjGfx.FillRectangle(New SolidBrush(Color.black), axeYg,axeYh, axeYe,axeYl) 'y MonObjGfx.FillRectangle(New SolidBrush(Color.black), axeXg,axeXh, axeXl,axeXe) 'x For i = 0 To 11 'Valeur mise en varible 2 MesValeurs2(i) = formatnumber(MesValeurs(i),0) 'reglage de l'echelle automatique MesValeurs(i)=formatnumber((MesValeurs(i)*axeYl)/Ech,0) ' On trace le rectangle de couleur Bleu MonObjGfx.FillRectangle(New SolidBrush(Color.Blue), ((i + 1) * Esp), axeXh - MesValeurs(i), Ep,MesValeurs(i)) ' Histoire de rendre un peu plus beau notre histogramme, on met un contour pour chaque barre MonObjGfx.DrawRectangle(Pens.Black, ((i + 1) * Esp), axeXh - MesValeurs(i), Ep, MesValeurs(i)) ' On affiche les valeurs a 10px dessus des barres MonObjGfx.DrawString(MesValeurs2(i).ToString, New Font("Arial", 8), Brushes.Red, ((i + 1) * Esp), axeXh - MesValeurs(i)-10) MonObjGfx.DrawString(MesDescriptions(i).ToString, New Font("Arial", 8), Brushes.Green, ((i + 1) * Esp), axeXh) 'mise en varible des valeurs de la moyenne moyenne=moyenne+MesValeurs(i) moyenne2=moyenne2+MesValeurs2(i) if Mesvaleurs2(i) <>0 then compteur=compteur+1 end if Next 'calcul de la moyenne 1 et 2 moyenne=moyenne/compteur moyenne2=moyenne2/compteur 'Tracé le trait de la moyenne MonObjGfx.FillRectangle(New SolidBrush(Color.red), axeXg,axeXh - moyenne, axeXl,axeXe) 'x ' valeur de la moyenne MonObjGfx.DrawString(moyenne2.ToString, New Font("Arial", 8), Brushes.red,PEXy-20 , axeXh - moyenne-20) ' Legende Axe des Y MonObjGfx.DrawString(LY.ToString, New Font("Arial", 8), Brushes.Black, PEYy, PEYx) ' Legende Axe des X MonObjGfx.DrawString(LX.ToString, New Font("Arial", 8), Brushes.Black, PEXy, PEXx) ' On "balance" le graph au format Gif ou jpeg MaBitMap.Save(Response.OutputStream, ImageFormat.Gif) End Sub
12 janv. 2005 à 14:18
Merci
24 nov. 2004 à 17:23
et maintenant si je veux l'incorporer dans une page avec d'autres elements.
car la ca s'affiche seul dans une nouvelle page.
merci.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.