Member 13210933 Ответов: 1

Как нарисовать линейный график в C#,


namespace VistaBalanceAlgorithms
{
    public class VerticalForce
    {
        public static float SteadyStateTotalForce = 1;
        public static bool SteadyState = false;

        public VerticalForce(float[] frameValues)
        {
            Left = 0;
            Right = 0;
            Total = 0;

            if (frameValues != null)
            {
                float leftForce = frameValues.Take(frameValues.Length / 2).Sum();
                float rightForce = frameValues.Skip(frameValues.Length / 2).Sum();
                Left = (int)((leftForce / SteadyStateTotalForce) * 100);
                Right = (int)((rightForce / SteadyStateTotalForce) * 100);

                Left = Left < 0 ? 0 : Left;
                Right = Right < 0 ? 0 : Right;

                Total = Left + Right;
            }
        }

        public int Left { get; protected set; }
        public int Right { get; protected set; }
        public int Total { get; protected set; }
    }

    public class VerticalForceGraph
    {
        private List<VerticalForce> vtfList = new List<VerticalForce>();

        public int BufferSize { get; set; }

        public void Add(VerticalForce vtf)
        {
            vtfList.Add(vtf);
        }

        public void Reset() { vtfList.Clear(); }

        public int Count {get{return vtfList.Count;} }

        public float[] GetLeftVTF()
        {
            return vtfList.Select(x => (float)x.Left).ToArray();
        }

        public float[] GetLeftVTF(int startPoint, int count)
        {
            return vtfList.GetRange(startPoint, count).Select(x => (float)x.Left).ToArray();
        }

        public float[] GetRightVTF()
        {
            return vtfList.Select(x => (float)x.Right).ToArray();
        }

        public float[] GetRightVTF(int startPoint, int count)
        {
            return vtfList.GetRange(startPoint, count).Select(x => (float)x.Right).ToArray();
        }

        public float[] GetTotalVTF()
        {
            return vtfList.Select(x => (float)x.Total).ToArray();
        }

        public float[] GetTotalVTF(int startPoint, int count)
        {
            return vtfList.GetRange(startPoint, count).Select(x => (float)x.Total).ToArray();
        }
    }
}





Я хочу вызвать эти методы и нарисовать линейный график для каждого из них

Что я уже пробовал:

Это моя главная форма.


private void toolStripMenuItemVtfGraphicalView_Click(object sender, EventArgs e)
       {
           m_viewMode = viewModes.VTF_GRAPHICAL_VIEW;
           panelHeatMap.viewMode = m_viewMode;

           toolStripDropDownViewMode.Text = toolStripMenuItemVtfGraphicalView.Text;
           chart1.Visible = true;
           for (int i = 10; i < 100; i += 50)
           {
               chart1.Series["Left Vtf"].Points.AddXY(vtfGraph.GetLeftVTF(),i);
               chart1.Series["Right Vtf"].Points.AddXY(vtfGraph.GetRightVTF(),i);
               chart1.Series["Total Vtf"].Points.AddXY(vtfGraph.GetTotalVTF(),i);
           }


       }

BillWoodruff

И что происходит сейчас, что вы хотите изменить ?

1 Ответов

Рейтинг:
7

an0ther1

MSDN предоставляет базовые учебные пособия с использованием системы.Окна.Формы.DataVisualization.Построение диаграмм, приведенные ниже ссылки относятся к Visual Studio 2012;
MSDN-учебник: создание базовой диаграммы
[^]
Более подробная версия;
MSDN: элементы управления диаграммами[^]

Я использую эквивалент .Net Framework 4.5 на сайте MVC, и он работает для того, что мне нужно

с уважением


Member 13210933

спасибо, дорогая., но я хочу использовать эту функцию GetLeftVTF (), и она должна работать как живая...на data connect...но это не работает.

an0ther1

Какой компонент диаграммы вы используете?
Если вы используете тот, который я определил, то вам нужно прочитать документацию и отладить его. Если нет, то обратитесь к документации используемого вами элемента управления.
Одна вещь, которую я могу сказать вам из документации, метод AddXY не принимает массив для вашего значения X-refer; https://msdn.microsoft.com/en-us/library/dd456289(d=hv. 2, v=vs. 110). aspx
Рад помочь, но мы можем видеть только ту информацию, которую вы предоставили

с уважением

Member 13210933

спасибо, дорогая...