我使用内置的.NET 4.0控件创建了一个StackedColumn图表。图表显示得不错。不过我想让它看起来是三维的。我可以通过使用XAML来做到这一点。但我无法使用代码实现同样的功能。
请看后面的代码。我有一个图表和一个图表区。我看到启用3-D的代码如下:
Chart1.ChartAreas["Default"].Area3DStyle.Enable3D = true;
但我在运行时遇到一个错误,如下所示:索引超出范围。必须是非负数并且小于集合的大小。参数名称:索引
我还尝试使用以下选项(其中cArea是ChartArea的实例):
cArea.Area3DStyle.Enable3D = true;
Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;
Chart1.ChartAreas[0].Area3DStyle.Enable3D = true;
我设置这些属性的位置有什么不同吗。在添加Chart1元素之前,我尝试了上面的3个语句。
我使用的代码是:
Chart1.Series.Clear();
Chart1.ChartAreas.Clear();
ChartArea cArea = new ChartArea("Default");
Chart1.ChartAreas.Add(cArea);
// ABLE TO USE cArea to change properties.... !!!
cArea.AxisX.LabelStyle.Angle = +80;
cArea.AxisX.LabelStyle.Interval = 1;
cArea.BackColor = Color.Beige;
foreach (var g in groups)
{
Series s1 = new Series(g.Key);
Chart1.Series.Add(s1);
s1.ChartType = SeriesChartType.StackedColumn;
s1["PointWidth"] = "0.7";
foreach (var m in g)
{
s1.Points.AddXY(m.Category, m.Count);
}
s1.IsValueShownAsLabel = true;
s1.ToolTip = "#VALY";
}
this.Controls.Add(Chart1);
XAML是:
<asp:Chart ID="Chart1" runat="server" ImageLocation="~/FolderLoc/Chart_#SEQ(1000,0)" ImageStorageMode="UseImageLocation" ImageType="Png" >
</asp:Chart>
然而,我可以使用cArea来更改其他属性,作为我的图表的一部分,如代码所示:
// ABLE TO USE cArea to change properties.... !!!
cArea.AxisX.LabelStyle.Angle = +80;
cArea.AxisX.LabelStyle.Interval = 1;
cArea.BackColor = Color.Beige;
当使用静态数据时,我可以将"Enable3D"设置为TRUE,XAML为:
<chartareas>
<asp:ChartArea Name="Default">
<Area3DStyle Enable3D="True" />
</asp:ChartArea>
</chartareas>
你能告诉我如何启用图表的三维功能吗?
要尝试两件事:
Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;
Chart1.ChartAreas[0].Area3DStyle.Enable3D = true;
您在X轴上有空数据。使用AlignDataPointsByAxis解决此问题。