Faire un historgramme (en gif) à la volée en asp.net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 982 fois - Téléchargée 34 fois


Contenu du snippet

Ce script vous montre comment générer une image GIF à la volée grâce à ASP.Net
Créez une page, mettez ceci dans le code (supprimez tout le html dans le fichier .aspx)

Source / Exemple :


' A mettre en haut de votre page avant le "Public Class"
Imports System.Drawing
Imports System.Drawing.Imaging

' Puis mettez ceci dans votre Page_Load
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim i As Integer
    Dim MaBitMap As New Bitmap(300, 250) ' On créé une image de 300x250
    Dim MonObjGfx As Graphics
    Dim MesValeurs(9) As Integer
    Dim MesDescriptions(9) As String

    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, 299, 249)
    ' On donne titre à notre graphique
    MonObjGfx.DrawString("ASPFr.Com Rulez ! ;-)", New Font("Verdana", 16, FontStyle.Bold), Brushes.Black, New PointF(5, 5))

    For i = 0 To 9
        ' On rempli avec un nombre aléatoire entre 0 et 200
        MesValeurs(i) = 200 * Rnd()
        ' Pour cet exemple, on met la valeur en temps que légende
        MesDescriptions(i) = MesValeurs(i)
        ' On trace le rectangle de couleur Bleu
        MonObjGfx.FillRectangle(New SolidBrush(Color.Blue), ((i + 1) * 25), 230 - MesValeurs(i), 10, MesValeurs(i))
        ' Histoire de rendre un peu plus beau notre histogramme, on met un contour pour chaque barre
        MonObjGfx.DrawRectangle(Pens.Black, ((i + 1) * 25), 230 - MesValeurs(i), 10, MesValeurs(i))
        ' On affiche la légende en dessous de la barre tracée
        MonObjGfx.DrawString(MesDescriptions(i).ToString, New Font("Arial", 8), Brushes.Black, ((i + 1) * 25), 235)
    Next
    ' On "balance" le graph au format Gif
    MaBitMap.Save(Response.OutputStream, ImageFormat.Gif)

    ' On peut très bien le sortir en Jpeg ou dans d'autres formats, voici la syntax :
    ' MaBitMap.Save(Response.OutputStream, ImageFormat.Jpeg)
End Sub

A voir également

Ajouter un commentaire Commentaires
Messages postés
227
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
26 avril 2012

Bonjour,

Ce code est très simple et fonctionne sans soucis mais le problème est que si on l'inclu dans une master page, le code du gif (ou autre format) d'affiche comme nu response.writer en plus du graphe.

Est-il possible Nix de ne pas afficher le code de l'image ?

Merci

++
Messages postés
81
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
7 juin 2012

Bonjour, j'ai fait tout comme il est dit ... mais je n'arrive pas faire fonctionner cette source.
J'ai une page blanche et vide...

Dans le code HTML, j'ai mis ca... c'est Bon ?

<%@ Page Language="vb" %>
<%@ Import NameSpace="System.Drawing" %>
<%@ Import NameSpace="System.Drawing.Imaging" %>
<script runat=server ></script>

il faut faire autre chose ?

Merci
Messages postés
24
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
19 mai 2008

C'est super sympas comme script.
J'aurais voulu savoir comment faire pour afficher le graph dans une sorte de popup?
En fait je voudrais dimensionner la fenetre de sortie (Response.OutputStream) au format de mon graphique.

Merci
Messages postés
3
Date d'inscription
samedi 7 décembre 2002
Statut
Membre
Dernière intervention
30 décembre 2003

Tout en haut de ton code :
<%@ Page Language="VB" %>
<%@ Import NameSpace="System.Drawing" %>
<%@ Import NameSpace="System.Drawing.Imaging" %>
<script runat="server">
Messages postés
2
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
9 juillet 2002

Ca m'a l'air bien bien sympa comme script mais je ne sais pas comment faire pour insérer ce qui est en en-tête et qui doit figurer avant le public class.
Si quelqu'un peut m'aider.
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.