Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2015, 10:38   #1
mihan535
 
Регистрация: 29.07.2015
Сообщений: 5
По умолчанию от чайника в charte C# по графику

Ребята помогите с этим вопросом пожалуйста.

Небольшая история. При выборе нескольких параметров в checkedlistbox (то есть поставив галочки в нем) и нажимая на checkbox вверху на скрине под названием "вкл. дополнительные оси Y" рисуется график такой как на скрине с двумя дополнительным осями справа.

А ВОПРОС вот в чем : изменяя максимумы и минимумы основной левой оси Y происходит автоматическое изменение масштаба графика, но вот изменение максимумов и минимумов дополнительных правых осей не приводит к изменению масштаба графика, а только к изменениям самих осей, и поэтому график становится некорректным.

Часть кода связанная с построением дополнительных осей:

Код:
public List<System.Windows.Forms.DataVisualization.Charting.ChartArea> t = new List<System.Windows.Forms.DataVisualization.Charting.ChartArea>();
        public System.Windows.Forms.DataVisualization.Charting.ChartArea areaAxis;
        public System.Windows.Forms.DataVisualization.Charting.ChartArea areaSeries;
        public void CreateYAxis(System.Windows.Forms.DataVisualization.Charting.Chart chart, System.Windows.Forms.DataVisualization.Charting.ChartArea area, System.Windows.Forms.DataVisualization.Charting.Series series, float axisOffset, float labelsSize)
        {
            // Create new chart area for original series
            areaSeries = chart.ChartAreas.Add("ChartArea_" + series.Name);
            areaSeries.BackColor = Color.Transparent;
            areaSeries.BorderColor = Color.Transparent;
            areaSeries.Position.FromRectangleF(area.Position.ToRectangleF());
            areaSeries.InnerPlotPosition.FromRectangleF(area.InnerPlotPosition.ToRectangleF());
            areaSeries.AxisX.MajorGrid.Enabled = false;
            areaSeries.AxisX.MajorTickMark.Enabled = false;
            areaSeries.AxisX.LabelStyle.Enabled = false;
            areaSeries.AxisY.MajorGrid.Enabled = false;
            areaSeries.AxisY.MajorTickMark.Enabled = false;
            areaSeries.AxisY.LabelStyle.Enabled = false;
            //areaSeries.AxisY.IsStartedFromZero = area.AxisY.IsStartedFromZero;
            //areaSeries.AxisY.Interval = 2;
        
            series.ChartArea = areaSeries.Name;
 
            // Create new chart area for axis
            areaAxis = chart.ChartAreas.Add("AxisY_" + series.ChartArea);
            areaAxis.BackColor = Color.Transparent;
            areaAxis.BorderColor = Color.Transparent;
            areaAxis.Position.FromRectangleF(chart.ChartAreas[series.ChartArea].Position.ToRectangleF());
            areaAxis.InnerPlotPosition.FromRectangleF(chart.ChartAreas[series.ChartArea].InnerPlotPosition.ToRectangleF());
            t.Add(areaAxis);
            // Create a copy of specified series
            System.Windows.Forms.DataVisualization.Charting.Series seriesCopy = chart.Series.Add(series.Name + "_Copy");
            seriesCopy.ChartType = series.ChartType;
            //series.YAxisType = AxisType.Secondary;
           // series.YAxisType = AxisType.Secondary;
 
 
            foreach (DataPoint point in series.Points)
            {
                seriesCopy.Points.AddXY(point.XValue, point.YValues[0]);
            }
 
          //  AddGrafAnotherVremeni(chart1.Series[NumberSeries].Name);
            
        
 
            // Hide copied series
            seriesCopy.IsVisibleInLegend = false;
            seriesCopy.Color = Color.Transparent;
            seriesCopy.BorderColor = Color.Transparent;
            seriesCopy.ChartArea = areaAxis.Name;
 
            // Disable drid lines & tickmarks
            areaAxis.AxisX.LineWidth = 0;
            areaAxis.AxisX.MajorGrid.Enabled = false;
            areaAxis.AxisX.MajorTickMark.Enabled = false;
            areaAxis.AxisX.LabelStyle.Enabled = false;
            areaAxis.AxisY.MajorGrid.Enabled = false;
            //areaAxis.AxisY.MaximumAutoSize = false;
            //areaAxis.AxisY.IsStartedFromZero = area.AxisY.IsStartedFromZero;
            areaAxis.AxisY.TitleFont = new System.Drawing.Font("Times New Roman", 14, FontStyle.Regular);
            areaAxis.AxisY.LabelStyle.Font = area.AxisY.LabelStyle.Font;
            areaAxis.AxisY.IsLabelAutoFit = true; 
            areaAxis.AxisX.IsLabelAutoFit = true;
          //  areaAxis.AxisY.Interval = (chart1.ChartAreas[0].AxisY.Maximum - chart1.ChartAreas[0].AxisY.Minimum) / 4;
           // areaAxis.AxisY.Minimum
            //chart1.ChartAreas[0].AxisY.Maximum 
            //main.chart1.ChartAreas[0].AxisY.Maximum
            // Adjust area position
            chart1.ChartAreas[0].Position.Auto = false;
            
                areaAxis.Position.X -= labelsSize - 50;
                areaAxis.InnerPlotPosition.X += labelsSize + 50;
            
        
 
        }
Изображения
Тип файла: jpg Безымянный.jpg (29.4 Кб, 122 просмотров)
Тип файла: jpg 212.jpg (28.2 Кб, 122 просмотров)
mihan535 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для чайника arthur1 БД в Delphi 0 26.09.2011 08:57
Проконсультируйте чайника Mila_SH WPF, UWP, WinRT, XAML 0 12.02.2011 23:57
проблема с построением диаграммы в Charte Kurai Помощь студентам 0 17.05.2010 20:37
Вопрос от чайника Катарсис Общие вопросы C/C++ 14 03.05.2010 19:32