动态创建图表
我正在尝试为表单内的计算机中的每个驱动器动态创建一个图表。
每个图表应该是一个饼图,其中包含GB中的可用空间量(绿色)和已用空间(红色)。
但是,当我运行以下代码时,我唯一看到的是空白矩形,标题为“C:\”,“D:\”等等。
这是代码:
public static void DrawCharts() { Chart[] charts = new Chart[DriveInfo.GetDrives().Length]; DriveInfo[] drives = DriveInfo.GetDrives(); for (int i = 0; i < drives.Length; i++) { charts[i] = new Chart(); charts[i].Palette = ChartColorPalette.BrightPastel; charts[i].Titles.Add(drives[i].Name); charts[i].Series.Add("Storage"); charts[i].Series[0].ChartType = SeriesChartType.Pie; charts[i].Location = new System.Drawing.Point(20 + i * 231, 30); charts[i].Size = new System.Drawing.Size(230, 300); DataPoint d = new DataPoint(); d.XValue = 1; double[] p = { (double)drives[i].TotalFreeSpace / 1000000000 }; d.YValues = p; d.Color = System.Drawing.Color.YellowGreen; d.Label = "Free Space"; charts[i].Series[0].Points.Add(d); d.Label = "Used Space"; d.XValue = 2; double[] a = { (double)((drives[i].TotalSize - drives[i].TotalFreeSpace) / 1000000000) }; d.YValues = a; d.Color = System.Drawing.Color.Red; charts[i].Series[0].Points.Add(d); Form1.tabs.TabPages[1].Controls.Add(charts[i]); charts[i].Invalidate(); } }
谢谢。
你快到了。
但是你需要添加到动态创建的图表中的最基本的东西..:
charts[i] = new Chart();
..是一个ChartArea
:
charts[i].ChartAreas.Add("CA1"); // pick your name!
没有它,没有Series
可以显示..
使用它可以使用TickMarks
, GridLines
或Labels
设置轴的样式,或者设置Minima
, Maxima
和Intervals
。 好吧,至少对于大多数其他ChartTypes
; Pies
不需要任何这个..
请注意,您可以在一个Chart
包含多个ChartAreas
。
另请注意,在至少一个Series
至少有一个DataPoint
之前,它仍然不显示任何内容。