IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Affichage dynamique d'image


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Par défaut Affichage dynamique d'image
    Bonjour à tous,

    Voilà mon problème :

    J'ai une page ASP qui crée un graphique à partir d'une liste de valeur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     private static Bitmap CreateCourbe(int p1, int p2, int p3, int p4, int p5, int p6, int p7)
        {
    //Ici je crée ma courbe et retourne l'image correspondante
            Bitmap bmp = new Bitmap(194, 123);
            Graphics g = Graphics.FromImage(bmp);
     
               Brush vBrush;
            if (p7 < 10)
            { vBrush = Brushes.MediumBlue; }
            else if (p7 < 25)
            { vBrush = Brushes.SteelBlue; }
            else if (p7 < 50)
            { vBrush = Brushes.CornflowerBlue; }
            else if (p7 < 75)
            { vBrush = Brushes.LightBlue; }
            else { vBrush = Brushes.White; }
     
            g.FillRectangle(Brushes.Gray, new Rectangle(0, 0, 194, 123));
            g.FillRectangle(vBrush, new Rectangle(0, 0, 150, 100));
     
            //Coordonnées courbe
            PointF[] points = new PointF[8];
            points[0].X = 0; points[0].Y = 100 - 0; points[1].X = 5; points[1].Y = 100 - p1;
            points[2].X = 10; points[2].Y = 100 - p2; points[3].X = 20; points[3].Y = 100 - p3;
            points[4].X = 40; points[4].Y = 100 - p4; points[5].X = 60; points[5].Y = 100 - p5;
            points[6].X = 90; points[6].Y = 100 - p6; points[7].X = 150; points[7].Y = 100 - p7;
            //Lignes
            Pen vPenLine = new Pen(Brushes.LightGray);
            g.DrawLine(vPenLine, new PointF(0, 25), new PointF(150, 25)); g.DrawLine(vPenLine, new PointF(0, 50), new PointF(150, 50));
            g.DrawLine(vPenLine, new PointF(0, 75), new PointF(150, 75));// g.DrawLine(vPenLine, new PointF(25, 0), new PointF(25, 100));
            //courbe 
            Pen vPen = new Pen(Brushes.Black);
            g.DrawCurve(vPen, points, 0.4F);
            //Légende
            g.DrawString("5", new Font("Arial", 7), Brushes.White, new PointF(2, 105)); g.DrawString("20", new Font("Arial", 7), Brushes.White, new PointF(16, 105));
            g.DrawString("40", new Font("Arial", 7), Brushes.White, new PointF(36, 105)); g.DrawString("60", new Font("Arial", 7), Brushes.White, new PointF(56, 105));
            g.DrawString("90", new Font("Arial", 7), Brushes.White, new PointF(86, 105)); g.DrawString("90+", new Font("Arial", 7), Brushes.White, new PointF(132, 105));
            g.DrawString("25%", new Font("Arial", 7), Brushes.White, new PointF(155, 72)); g.DrawString("50%", new Font("Arial", 7), Brushes.White, new PointF(155, 47));
            g.DrawString("75%", new Font("Arial", 7), Brushes.White, new PointF(155, 22)); g.DrawString("Secondes", new Font("Arial", 7), Brushes.Black, new PointF(151, 105));
            g.DrawString("Nb %", new Font("Arial", 7), Brushes.Black, new PointF(160, 5));
     
            return bmp;  
        }
    Auparavant j'enregistrer cette image dans un fichier image sur le server ce qui marchait très bien mais inutilisable pour l'avenir quand plusieurs personnes utiliseront la page.

    Aujourd'hui je procède comme ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Ici j'appelle ma création de courbe et fais le Save
    CreateCourbe(vTabAverage[0], vTabAverage[1], vTabAverage[2], vTabAverage[3], vTabAverage[4], vTabAverage[5], vTabAverage[6]).Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg) ;
    J'appelle donc ma fonction et fais le
    Response.OutputStream

    Mon problème est que je voudrais afficher cette courbe dans un panel (par exemple) sur cette même page en gardant ma mise en forme, seulement pour l'instant je réaffiche ma page avec l'image de la courbe seulement.

    J'ai pensé enregistrer cette image de courbe sur une autre page et mettre sur mon panel un BackgroundUrl visant la page. Est-ce une bonne solution?

    J'ai essayé des MemoryStream au lieu du Response.OutputStream,
    mais je m'y prend mal et ne sais pas trop comment faire.

    Si quelqu'un à une idée. Merci beaucoup

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Par défaut
    Je répond moi même à mon post car après 2 jours j'ai trouver la réponse
    Enfin...Une des réponses qui peuvent s'appliquer

    Je fais ce code aprés la construction de mon image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Session["image"] = bmp;
            pPanel.BackImageUrl = "~/Default2.aspx";
    Puis dans le code de la page Default2.aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        private void Page_Load(object sender, EventArgs e)
        {
            ((Bitmap)Session["image"]).Save(Response.OutputStream, ImageFormat.Jpeg);
        }
    Ceci et mon image se génère donc sur deuxième page mais je l'affiche dans le panel de ma première

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] affichage dynamique des images
    Par trmalek dans le forum AJAX
    Réponses: 5
    Dernier message: 22/02/2012, 23h35
  2. [CR XI] Affichage dynamique d'images avec crystal report XI R2
    Par devvanjier dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 18/03/2010, 18h40
  3. affichage dynamique d'image
    Par el_harrathi dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 13/09/2009, 18h37
  4. Affichage dynamique d'images
    Par fbourelly dans le forum JSF
    Réponses: 0
    Dernier message: 22/04/2009, 14h20
  5. Affichage dynamique d'image
    Par Pilhole dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 27/02/2008, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo