Установка свойства «Enable3D» для «ChartArea» в разделе «Код позади» для диаграмм StackedColumn - PullRequest
1 голос
/ 07 марта 2012

Я создал диаграмму StackedColumn, используя встроенные элементы управления .NET 4.0. Графики выходят правильно. Я хочу, чтобы это выглядело 3-D, хотя. Я могу сделать это с помощью 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;

Есть ли разница в том, где я устанавливаю эти свойства. Я попробовал все 3 приведенных выше утверждения, прежде чем добавить элемент Chart1.

Код, который я использую:

        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>

Подскажите, пожалуйста, как включить трехмерную диаграмму?

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Две вещи, чтобы попробовать:

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

Chart1.ChartAreas[0].Area3DStyle.Enable3D = true;
0 голосов
/ 05 августа 2013

У вас есть пустые данные по оси X. Используйте AlignDataPointsByAxis, чтобы исправить это.

...