powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / от чайника в charte C# по графику
2 сообщений из 2, страница 1 из 1
от чайника в charte C# по графику
    #39024075
mihan535
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята помогите с этим вопросом пожалуйста.

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

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

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

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
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;
            
        
 
        }
...
Рейтинг: 0 / 0
от чайника в charte C# по графику
    #39024076
mihan535
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / от чайника в charte C# по графику
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]