1

我使用内置的 .NET 4.0 控件创建了一个 StackedColumn 图表。图表正确显示。不过,我想让它看起来像 3-D。我可以通过使用 XAML 来做到这一点。但是我无法使用后面的代码来做同样的事情。

请看我后面的代码。我有一个图表和一个 ChartArea。我看到启用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;

使用静态数据时,我可以使用 XAML 将“Enable3D”设置为 TRUE:

   <chartareas>
       <asp:ChartArea Name="Default">
           <Area3DStyle Enable3D="True" />
       </asp:ChartArea>
   </chartareas>

你能告诉我如何使图表启用 3-D 吗?

4

2 回答 2

3

有两件事要尝试:

Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;

Chart1.ChartAreas[0].Area3DStyle.Enable3D = true;
于 2012-03-07T02:29:35.417 回答
0

X 轴上有空数据。使用 AlignDataPointsByAxis 来解决这个问题。

于 2013-08-05T17:49:52.900 回答