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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2016, 04:07   #1
RomanSSS
Пользователь
 
Регистрация: 09.11.2012
Сообщений: 20
По умолчанию Microsoft Chart Control: для продвинутых!

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
using System.Windows.Forms.DataVisualization.Charting;
using System.Windows.Forms;
using System.Drawing;
 
namespace testC
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
            Chart crt = this.chart1;
 
            //первый график ==================================================
 
            ChartArea chartArea = new ChartArea();
 
            chartArea.Name = "Main";
            ///
            chartArea.AxisY.IsStartedFromZero = false; //автоматически подымает низ
            ///// join other charts ////
            chartArea.InnerPlotPosition.Auto = true;
            /////  Scroll  ///// 
            chartArea.CursorX.IsUserEnabled = true;
            chartArea.CursorX.IsUserSelectionEnabled = true;
 
            chartArea.AxisX.ScaleView.Zoomable = true;
            chartArea.AxisX.ScrollBar.IsPositionedInside = true;
 
 
 
             crt.ChartAreas.Add(chartArea);
 
 
             Legend L = new Legend("Main");
             L.DockedToChartArea = "Main";
             L.Alignment = StringAlignment.Near;
             L.Docking = Docking.Top;
             L.IsDockedInsideChartArea = true;
 
             crt.Legends.Add(L);
 
             Series S = new Series("Main");
 
            S.IsXValueIndexed = true;
            S.ChartArea = "Main";
            S.Legend = "Main";
            S.ChartType = SeriesChartType.Line;
            S.Color = Color.Red;
            S.XValueType = ChartValueType.DateTime;
 
            crt.Series.Add(S);
 
 
            //// Line1 график ========================
 
            /* String SeriesName = "Line1";
 
            Series v = new Series(SeriesName);
 
            v.IsXValueIndexed = true;
            v.ChartArea = "Main";
            v.Legend = SeriesName;
            v.ChartType = SeriesChartType.Line;
            v.Color = Color.Blue;
            v.LegendToolTip = SeriesName;
            S.LegendText = SeriesName;
            S.XValueType = ChartValueType.DateTime;
 
            crt.Series.Add(v);*/
           
 
            Random  rand = new Random();
            Random random = new Random();
        
            for (int day = 1; day <= 90; day++)
            {
 
                chart1.Series["Main"].Points.AddXY(day, random.Next(8000, 8200));
               // chart1.Series["Line1"].Points.AddXY(day, random.Next(8000, 8200));
            }
        }
 
 
    }
}
Пытаюсь сделать график с двумя линиями по оси Y в одном Area с возможностями ZOOM.
Проштудировал несколько примеров, с теоретической точки зрения вроде сделал всё правильно, но если добавить к графику Main, дополнительную линию Line1 , то программа сразу виснит.

И не могу понять почему?

И по ходу дела хотел бы задать следующие вопросы по MC:

1. Как при изменении ZOOM, сделать так что бы высота и пол подгонялись по Y к данным (как это он делает при загрузки). Просто когда в графике, при загрузки высота мин 100 и мак 200, а ты увеличиваешь диапазон где линия между 150-155, её становиться вообще не видно.
2. Если при загрузки графика высота и пол установились на уровне 100-150, а линия в процессе добавления/изменения новых данных ушла выше 150, то её становиться не видно,! Вопрос: как графику указать на то, что по нужно автоматически подгонять по Y если линия выходит за пределы графика.

В общем, как настроить авто подгон видимой области при изменении данных или zoom-а.

3. Здесь в каждой серии нужно добавлять дату, можно ли добавить дату только у линии MAIN и сделать так что бы она отражалась в низу последнего Arae (если их будет несколько?

4. На чартах, часто вижу, что в правой части двигается типа легенда с последнем значением на уровне линии, типа бегунок вверх-низ. Дайте ссылку если кто встречал, как это делаеться!
RomanSSS вне форума Ответить с цитированием
Старый 14.07.2016, 19:03   #2
RomanSSS
Пользователь
 
Регистрация: 09.11.2012
Сообщений: 20
По умолчанию

Кто нибудь в курсе?
RomanSSS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение таблиц для самых продвинутых. Fadey001 Microsoft Office Excel 1 08.12.2011 11:07
Тест на знание Javascript для продвинутых kitjobs JavaScript, Ajax 5 07.05.2011 00:14
задача для продвинутых! feonit C++ Builder 4 10.03.2011 22:44
компонент ms chart control в vb Kracozebr Помощь студентам 0 06.08.2010 10:32