我正在尝试为表单内的计算机中的每个驱动器动态创建一个图表。
每个图表都应该是一个饼图,其中包含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();
}
}
感谢。
答案 0 :(得分:1)
你快到了。
但是你需要添加到动态创建的图表中的最基本的东西..:
charts[i] = new Chart();
..是ChartArea
:
charts[i].ChartAreas.Add("CA1"); // pick your name!
没有它,Series
无法显示..
使用它为TickMarks
,GridLines
或Labels
设置轴的样式,或者设置Minima
和Maxima
以及Intervals
。好吧,至少对大多数其他ChartTypes
而言; Pies
无论如何都不需要任何这个......
请注意,您可以在一个ChartAreas
中拥有多个Chart
。
另请注意,在至少有一个Series
至少有一个DataPoint
之前,它仍然不会显示任何内容。