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
voici l'erreur :
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; } } }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:
Partager