смещение ширины графика при прокрутке

1

когда я прокручиваю осьX, моя диаграмма смещается. Я думаю, это происходит, потому что я использую пользовательские lablels. Как исправить ширину оси X?

            chart1.ChartAreas[0].AxisX.IsMarksNextToAxis = false;

            chart1.ChartAreas[0].CursorX.IsUserEnabled = true;
            chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
            chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
            chart1.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = false;
            chart1.ChartAreas[0].AxisX.ScaleView.Zoom(1, 250);

            chart1.ChartAreas[0].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.None;
            chart1.ChartAreas[0].AxisX.IsLabelAutoFit = true;

            chart1.ChartAreas[0].AxisY.LabelAutoFitStyle = LabelAutoFitStyles.None;
            chart1.ChartAreas[0].AxisY.IsLabelAutoFit = false;

            //custom labels
            //...
            //...
                 if (i % 13 == 0)
                 {
                     CustomLabel CL = new CustomLabel();
                     CL.FromPosition = i - 13;
                     CL.ToPosition = i + 13;
                     CL.Text = L[i].Item1.ToString("d MMM\r\nHH:mm");//+"\n"+L[i].Item1.ToString("HH:mm");

                     chart1.ChartAreas[0].AxisX.CustomLabels.Add(CL);
                 }
              //...
              //..
Теги:
charts

2 ответа

2
Лучший ответ

Большинство, если не все, элементы диаграммы имеют своего рода свойство размера. В вашем случае вы можете использовать свойство InnerPlotPosition для ChartArea. Дополнительную информацию см. В MSDN, но он может выглядеть примерно так:

chart1.ChartAreas[0].InnerPlotPosition.Width = 75; // this will make the plotting area width 75% of the whole chart area width
chart1.ChartAreas[0].InnerPlotPosition.Height = 60; // this makes the plotting area height 60% of the chart area height

или вы можете сделать что-то вроде:

chart1.ChartAreas[0].InnerPlotPosition = new ElementPosition(5, 10, 75, 60);

который сразу установит местоположение и размер области построения графика.

Одно замечание с этим свойством заключается в том, что размеры не являются фактическими размерами пикселей, а процентами от размера ChartArea. Это занимает много пустячный и методом проб и ошибок, чтобы получить их право, и вы, возможно, придется обрабатывать Form Resize событие в некоторых случаях, чтобы сохранить диаграмму хорошо выглядеть, когда окно получает изменен.

1

Вероятно, проблема связана с появлением и исчезновением самой правой метки во время прокрутки. Если это так, вы можете отключить его, установив для параметра ChartAreas[n].AxisX.LabelStyle.IsEndLabelVisible значение false. Таким образом вам не нужно бороться с значениями InnerPlotPosition.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню