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

C# Discussion :

Fabrication graph avec Charting


Sujet :

C#

  1. #1
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut Fabrication graph avec Charting
    Yo, les gens.
    Dans ce code, je fabrique un graph à partir de données non connues à l'avance par le programme (sauf le Case "finance" - nous travaillons donc sur le Case "remuneration" qui fabrique un graph camembert). Problème, lors de l'export en png (ligne 138), et bien ça me signale que je n'ai pas de limite mini et maxi pour les axes. J'ai jamais vu aucun cas ayant besoin de ces limites et même en tentant d'en mettre, ça ne marche pas
    Code C# : 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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Windows.Forms.DataVisualization.Charting;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Reflection;
    using System.Collections;
    using System.IO;
     
    namespace NewLCGenerator
    {
        class ChartBuilder
        {
            public string CreateGraph(string type, string codeass, ArrayList xvalues, ArrayList yvalues)
            {
                string imageuri = @".\asf" + codeass + @"_fichiers\" + type + ".png";
                string codeimg = "<img alt ='" + type + "' src ='" + imageuri + "'/>";
                Directory.CreateDirectory("asf" + codeass + "_fichiers");
     
                ChartArea chartArea1 = new ChartArea();
                Chart chart1 = new Chart();
                Title title1 = new Title();
     
                switch (type)
                {
                    case "remuneration":
                        chartArea1.Name = type;
                        title1.Name = type;
                        title1.Text = "Rémunération du 1er dirigeant";
                        Legend legendrem1 = new Legend();
                        Series seriesrem1 = new Series();
                        seriesrem1.ChartType = SeriesChartType.Pie;
                        seriesrem1.XValueType = ChartValueType.String;
                        for (int i = 0; i < xvalues.Count; i++)
                        {
                            if (Convert.ToDouble(yvalues[i]) > 0 && yvalues[i] != null)
                            {
                                seriesrem1.Points.AddXY(xvalues[i], (Convert.ToDouble(yvalues[i]) / Convert.ToDouble(yvalues[yvalues.Count - 1])));
                            }
                        }
     
                        chartArea1.Area3DStyle.Enable3D = true;
                        chartArea1.Area3DStyle.Inclination = 50;
                        chartArea1.Area3DStyle.Rotation = 50;
                        chartArea1.Area3DStyle.WallWidth = 0;
                        chart1.ChartAreas.Add(chartArea1);
                        legendrem1.Name = "Legendrem";
                        chart1.Legends.Add(legendrem1);
                        chart1.Location = new System.Drawing.Point(12, 12);
                        chart1.Name = type;
                        seriesrem1.ChartArea = type;
                        seriesrem1.Color = System.Drawing.Color.RoyalBlue;
                        seriesrem1.IsValueShownAsLabel = true;
                        seriesrem1.IsXValueIndexed = true;
                        seriesrem1.Legend = "Legendrem";
                        seriesrem1.LabelFormat = "P2";
                        seriesrem1.CustomProperties = "MinimumRelativePieSize=70, PieLabelStyle=Outside, 3DLabelLineSize=30";
                        foreach (DataPoint point in seriesrem1.Points)
                        {
                            point.CustomProperties = "Exploded=true";
                        }
                        chart1.Series.Add(seriesrem1);
                        chart1.Size = new System.Drawing.Size(800, 500);
                        chart1.TabIndex = 0;
                        chart1.Text = "chartremuneration";
                        chart1.Titles.Add(title1);
                        break;
     
                    case "finance":
                        chartArea1.Name = type;                    
                        title1.Name = type;
                        title1.Text = "chiffres-clef";
                        Legend legendfin1 = new Legend();
                        Series seriesfin1 = new Series();
                        seriesfin1.XValueType = ChartValueType.String;
                        seriesfin1.Points.AddXY(xvalues[0], Convert.ToDouble(yvalues[0]));
                        seriesfin1.Points.AddXY(xvalues[1], Convert.ToDouble(yvalues[1]));
                        seriesfin1.Points.AddXY(xvalues[2], Convert.ToDouble(yvalues[2]));
                        seriesfin1.Points.AddXY(xvalues[3], Convert.ToDouble(yvalues[3]));
                        Series seriesfin2 = new Series();
                        seriesfin2.XValueType = ChartValueType.String;
                        seriesfin2.Points.AddXY(xvalues[0], Convert.ToDouble(yvalues[4]));
                        seriesfin2.Points.AddXY(xvalues[1], Convert.ToDouble(yvalues[5]));
                        seriesfin2.Points.AddXY(xvalues[2], Convert.ToDouble(yvalues[6]));
                        seriesfin2.Points.AddXY(xvalues[3], Convert.ToDouble(yvalues[7]));
                        Series seriesfin3 = new Series();
                        seriesfin3.XValueType = ChartValueType.String;
                        seriesfin3.Points.AddXY(xvalues[0], Convert.ToDouble(yvalues[8]));
                        seriesfin3.Points.AddXY(xvalues[1], Convert.ToDouble(yvalues[9]));
                        seriesfin3.Points.AddXY(xvalues[2], Convert.ToDouble(yvalues[10]));
                        seriesfin3.Points.AddXY(xvalues[3], Convert.ToDouble(yvalues[11]));
     
                        chartArea1.AlignmentOrientation = ((AreaAlignmentOrientations)((AreaAlignmentOrientations.Vertical | AreaAlignmentOrientations.Horizontal)));
                        chartArea1.Area3DStyle.Enable3D = true;
                        chartArea1.Area3DStyle.Inclination = 17;
                        chartArea1.Area3DStyle.IsClustered = true;
                        chartArea1.Area3DStyle.Rotation = 25;
                        chartArea1.Area3DStyle.WallWidth = 0;
                        chart1.ChartAreas.Add(chartArea1);
                        legendfin1.Name = "Legendfin";
                        chart1.Legends.Add(legendfin1);
                        chart1.Location = new System.Drawing.Point(12, 12);
                        chart1.Name = type;
                        seriesfin1.ChartArea = type;
                        seriesfin1.Color = System.Drawing.Color.RoyalBlue;
                        seriesfin1.IsValueShownAsLabel = true;
                        seriesfin1.IsXValueIndexed = true;
                        seriesfin1.Legend = "Legendfin";
                        seriesfin1.Name = "Chiffre d'affaire";
                        seriesfin2.ChartArea = type;
                        seriesfin2.IsValueShownAsLabel = true;
                        seriesfin2.IsXValueIndexed = true;
                        seriesfin2.Legend = "Legendfin";
                        seriesfin2.Name = "Résultat opérationnel";
                        seriesfin2.XValueType = ChartValueType.Date;
                        seriesfin3.ChartArea = type;
                        seriesfin3.IsValueShownAsLabel = true;
                        seriesfin3.IsXValueIndexed = true;
                        seriesfin3.Legend = "Legendfin";
                        seriesfin3.Name = "Résultat net";
                        seriesfin3.XValueType = ChartValueType.Date;
                        chart1.Series.Add(seriesfin1);
                        chart1.Series.Add(seriesfin2);
                        chart1.Series.Add(seriesfin3);
                        chart1.Size = new System.Drawing.Size(703, 300);
                        chart1.TabIndex = 0;
                        chart1.Text = "chartfinance";
                        chart1.Titles.Add(title1);                    
                        break;
     
                    case "courbe":
                        //code ici.
                        break;
                }
                chart1.SaveImage(imageuri,ImageFormat.Png);
                return codeimg;
            }
        }
    }
    voici l'erreur :
    L'exception System.InvalidOperationException n'a pas été gérée
    HResult=-2146233079
    Message=Axes de la zone de graphique*-*Les valeurs minimales et maximales des axes n'ont pas été spécifiées.
    Source=System.Windows.Forms.DataVisualization
    StackTrace:
    à System.Windows.Forms.DataVisualization.Charting.ChartArea.SetDefaultFromData(Axis axis)
    à System.Windows.Forms.DataVisualization.Charting.ChartArea.SetDefaultAxesValues()
    à System.Windows.Forms.DataVisualization.Charting.ChartArea.SetData(Boolean initializeAxes, Boolean checkIndexedAligned)
    à System.Windows.Forms.DataVisualization.Charting.ChartArea.ReCalcInternal()
    à System.Windows.Forms.DataVisualization.Charting.ChartPicture.Paint(Graphics graph, Boolean paintTopLevelElementOnly)
    à System.Windows.Forms.DataVisualization.Charting.ChartImage.GetImage(Single resolution)
    à System.Windows.Forms.DataVisualization.Charting.Chart.SaveImage(Stream imageStream, ImageFormat format)
    à System.Windows.Forms.DataVisualization.Charting.Chart.SaveImage(String imageFileName, ImageFormat format)
    à NewLCGenerator.ChartBuilder.CreateGraph(String type, String codeass, ArrayList xvalues, ArrayList yvalues) dans d:\DEVELOPPEMENT\NewLCGenerator\ConsoleApplication4\ChartBuilder.cs:ligne 138
    à NewLCGenerator.Program.ContentListBuilder(String typedoc, String codeass) dans d:\DEVELOPPEMENT\NewLCGenerator\ConsoleApplication4\Program.cs:ligne 467
    à NewLCGenerator.Program.Main(String[] param) dans d:\DEVELOPPEMENT\NewLCGenerator\ConsoleApplication4\Program.cs:ligne 50
    à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    à System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    à System.Threading.ThreadHelper.ThreadStart()
    InnerException:

  2. #2
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    nouveauté, j'ai rajouté ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                        chartArea1.AxisY.Minimum = 0;
                        chartArea1.AxisY.Maximum = 100;
                        chartArea1.AxisY2.Minimum = 0;
                        chartArea1.AxisY2.Maximum = 100;
    pour obtenir ça :
    L'exception System.InvalidOperationException n'a pas été gérée
    HResult=-2146233079
    Message=Erreur de tri des points de données du graphique à secteurs*-*Les points Front et Back ne sont pas affectés.
    Source=System.Windows.Forms.DataVisualization
    StackTrace:
    à System.Windows.Forms.DataVisualization.Charting.ChartTypes.PieChart.PointOrder(Series series, ChartArea area, Single[]& newStartAngleList, Single[]& newSweepAngleList, Int32[]& newPointIndexList, Boolean& sameBackFrontPoint)
    à System.Windows.Forms.DataVisualization.Charting.ChartTypes.PieChart.ProcessChartType3D(Boolean selection, ChartGraphics graph, CommonElements common, ChartArea area, Single pieWidth)
    à System.Windows.Forms.DataVisualization.Charting.ChartTypes.PieChart.Paint(ChartGraphics graph, CommonElements common, ChartArea area, Series seriesToDraw)
    à System.Windows.Forms.DataVisualization.Charting.ChartArea.Paint(ChartGraphics graph)
    à System.Windows.Forms.DataVisualization.Charting.ChartPicture.Paint(Graphics graph, Boolean paintTopLevelElementOnly)
    à System.Windows.Forms.DataVisualization.Charting.ChartImage.GetImage(Single resolution)
    à System.Windows.Forms.DataVisualization.Charting.Chart.SaveImage(Stream imageStream, ChartImageFormat format)
    à System.Windows.Forms.DataVisualization.Charting.Chart.SaveImage(String imageFileName, ChartImageFormat format)
    à NewLCGenerator.ChartBuilder.CreateGraph(String type, String codeass, ArrayList xvalues, ArrayList yvalues) dans d:\DEVELOPPEMENT\NewLCGenerator\ConsoleApplication4\ChartBuilder.cs:ligne 141
    à NewLCGenerator.Program.ContentListBuilder(String typedoc, String codeass) dans d:\DEVELOPPEMENT\NewLCGenerator\ConsoleApplication4\Program.cs:ligne 467
    à NewLCGenerator.Program.Main(String[] param) dans d:\DEVELOPPEMENT\NewLCGenerator\ConsoleApplication4\Program.cs:ligne 50
    à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    à System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    à System.Threading.ThreadHelper.ThreadStart()
    InnerException:
    Et toujours pareil, RIEN sur votre ami gogole.

  3. #3
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    Résolu :

    après 2 jours... pour m'apercevoir, qu'il manquait UNE valeur, le diviseur (null).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    seriesrem1.Points.AddXY(xvalues[i], (Convert.ToDouble(yvalues[i]) / Convert.ToDouble(yvalues[yvalues.Count - 1])));
    donc, résultat infini, donc erreur me parlant de trucs n'ayant rien à voir. Ce qui est tout à fait normal et m'a SUPER bien aidé à comprendre...
    Merci microchiotte...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/06/2014, 17h04
  2. tracé graphe avec composant chart
    Par farid0031 dans le forum C++Builder
    Réponses: 1
    Dernier message: 19/11/2010, 15h28
  3. Graphe avec java
    Par alamihamza dans le forum 2D
    Réponses: 3
    Dernier message: 07/03/2005, 17h14
  4. [NetBeans] graphe avec netBeans :?:
    Par sofien dans le forum NetBeans
    Réponses: 1
    Dernier message: 28/02/2005, 19h54
  5. Affichage graphe avec DBChart
    Par grominetos dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/06/2004, 19h17

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