none
Си шарп: вертикальный скроллинг на чартах RRS feed

  • Вопрос

  • Здравствуйте! 

    Где можно посмотреть пример кода или проекта для реализации вертикального скроллинга на компоненте CHART в Си Шарп WinForms?

    SHerkh


    • Изменено SHerkh 13 июля 2021 г. 14:58
    13 июля 2021 г. 14:49

Все ответы

  • Здравствуйте,

    Помострите как примеры:



    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    13 июля 2021 г. 15:09
    Модератор
  • Доброе утро! 

    Горизонтальный скроллинг на chart реализуется достаточно просто штатными методами компонента. А вот вертикальный, к сожалению, если реализовывать по образу и подобию горизонтального, не работает. При сборке проекта, что интересно, ошибок VS не выдаёт.

    И вертикальный скроллинг на форме  и в чарте всё же отличаются. 

    У меня в своё время был учебный проект от microsoft для демонстрации работы CHART, не встречали? Я, в сети, как не старался, не нашёл.

    SHerkh


    • Изменено SHerkh 14 июля 2021 г. 2:02
    14 июля 2021 г. 2:02
  • Не встречал к сожалению. Покажите полжалуйста пример кода как вы имплементируете вертикальный. Насколько мне известно надо пользоваться AxisY, как пример:

    chart1.ChartArea.AxisY.ScrollBar.Min = cd.MinY;
    chart1.ChartArea.AxisY.ScrollBar.Max = cd.MaxY;
    chart1.ChartArea.AxisY.ScrollBar.Appearance = ScrollBarAppearanceEnum.Normal;
    chart1.ChartArea.AxisY.ScrollBar.Visible = true;
    chart1.ChartArea.AxisY.ScrollBar.Alignment = StringAlignment.Center;


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.


    14 июля 2021 г. 7:53
    Модератор
  • Привет,

    Спасибо за вопрос и за то, что связались с нами.

    См. Пример кода для использования в MS Chart C # для достижения этой цели.

    private void FillChart()
    {
        int blockSize = 100;
    
        // generates random data (i.e. 30 * blockSize random numbers)
        Random rand = new Random();
        var valuesArray = Enumerable.Range(0, blockSize * 30).Select(x => rand.Next(1, 10)).ToArray();
    
        // clear the chart
        chart1.Series.Clear();
    
        // fill the chart
        var series = chart1.Series.Add("My Series");
        series.ChartType = SeriesChartType.Line;
        series.XValueType = ChartValueType.Int32;
        for (int i = 0; i < valuesArray.Length; i++)
            series.Points.AddXY(i, valuesArray[i]);
        var chartArea = chart1.ChartAreas[series.ChartArea];
    
        // set view range to [0,max]
        chartArea.AxisX.Minimum = 0;
        chartArea.AxisX.Maximum = valuesArray.Length;
    
        // enable autoscroll
        chartArea.CursorX.AutoScroll = true;
    
        // let's zoom to [0,blockSize] (e.g. [0.100])
        chartArea.AxisX.ScaleView.Zoomable = true;
        chartArea.AxisX.ScaleView.SizeType = DateTimeIntervalType.Number;
        int position = 0;
        int size = blockSize;
        chartArea.AxisX.ScaleView.Zoom(position, size);
    
        // disable zoom-reset button (only scrollbar's arrows are available)
        chartArea.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll;
    
        // set scrollbar small change to blockSize (e.g. 100)
        chartArea.AxisX.ScaleView.SmallScrollSize = blockSize;
    }

    Если ответ был полезен, пожалуйста, не забудьте проголосовать или принять в качестве ответа, спасибо.

    Милостиво,
    Самуэль

    14 июля 2021 г. 8:02
  • Доброе утро!

    Вот код, который реализует горизонтальный скроллинг:

                // Скроллинг горизонтальный на чарте
                Chart1.ChartAreas[0].CursorX.AutoScroll = true;
                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;

    CursorX.AutoScroll, практичеки, не влияет на появление скроллбара.

    Необходимо, вероятно, ещё и с Zoom(0, N), и c  Size разобраться.

    А этот код ошибок не выдаёт, но не работает. 

                // Скроллинг вертикальный на чарте
                Chart1.ChartAreas[0].CursorY.AutoScroll = true;
                Chart1.ChartAreas[0].CursorY.IsUserEnabled = true;
                Chart1.ChartAreas[0].CursorY.IsUserSelectionEnabled = true;
                Chart1.ChartAreas[0].AxisY.ScaleView.Zoomable = true;
                Chart1.ChartAreas[0].AxisY.ScrollBar.IsPositionedInside = false;


    SHerkh

    15 июля 2021 г. 2:22
  • Сегодня поработаю с этим кодом и доложусь. Спасибо.

    SHerkh

    15 июля 2021 г. 2:23