Как нарисовать график в windows forms c

Добрый день, подскажите пожалуйста, как построить график многочлена : сам многочлен p(x)=An*X^n + An-1*X^n-1+...+A1X+A0 int[] array= new int[10]; int i, num, power; float x; num=4; x=1; array[0...

Для начала вам будет достаточно стандартного класса Chart, хотя есть и сторонние компоненты для построения красивых графиков, но мне кажется, что сначала лучше разобраться со стандартным контролом. В документации на MSDN есть довольно подробный Tutorial. Основные моменты покажу в коде, подробности в официальной документации.

class ChartForm : Form
{
    public ChartForm()
    {
        //создаем элемент Chart
        Chart myChart = new Chart();
        //кладем его на форму и растягиваем на все окно.
        myChart.Parent = this;
        myChart.Dock = DockStyle.Fill;
        //добавляем в Chart область для рисования графиков, их может быть
        //много, поэтому даем ей имя.
        myChart.ChartAreas.Add(new ChartArea("Math functions"));
        //Создаем и настраиваем набор точек для рисования графика, в том
        //не забыв указать имя области на которой хотим отобразить этот
        //набор точек.
        Series mySeriesOfPoint = new Series("Sinus");
        mySeriesOfPoint.ChartType = SeriesChartType.Line;
        mySeriesOfPoint.ChartArea = "Math functions";
        for (double x = -Math.PI; x <= Math.PI; x += Math.PI / 10.0) 
        {
            mySeriesOfPoint.Points.AddXY(x, Math.Sin(x));
        }
        //Добавляем созданный набор точек в Chart
        myChart.Series.Add(mySeriesOfPoint);
    }
} 

Вот собственно минимум кода для рисования графика на форме. Здесь не приведены ни настройки осей координат и сетки, ни другие графические рюшечки которые поддерживает данный контрол, т.к. примеры применения практически всех возможностей этого контрола есть в официальной документации, ссылка выше.

Дополнение:

Вам нужно вычисление многочлена вынести в отдельную функцию. Это можно сделать например так

double Polynom(double x, double[] coefficients)
{
    double y = 0.0;
    double currentX = 1.0;
    for(int i = 0; i<coefficients.Length; i++)
    {
        y += currentx * coefficients[i];
        currentx *= x;
    }
    return y;
}

И подставить ее вместо Math.Sin в моем примере.

0 / 0 / 0

Регистрация: 16.11.2021

Сообщений: 39

1

Как нарисовать график?

15.05.2022, 18:24. Показов 3707. Ответов 12


есть график y={-x}^{3}+{3x}^{2}+3. Промежуток от [-10;10], шаг h = 0.2. Его надо сделать в форме. Кто зает как это сделать?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



0 / 0 / 0

Регистрация: 24.12.2020

Сообщений: 31

15.05.2022, 18:28

2

Предполагаю, что через пикчербокс. Рисуешь 2 линии X и Y. Принимаешь начало отсчета, которое требуется, затем, с определенным шагом через цикл высчитываешь координату точки, помещаешь её в массив точек, затем соединяешь через встроенный метод.



0



0 / 0 / 0

Регистрация: 16.11.2021

Сообщений: 39

15.05.2022, 18:30

 [ТС]

3

Ну это логично, а не могли ви би представить это в коде? Нам дали задание это сделать через Chart…



0



John Prick

2058 / 1591 / 678

Регистрация: 27.07.2012

Сообщений: 4,768

15.05.2022, 22:28

4

Лучший ответ Сообщение было отмечено Alex Savchuk как решение

Решение

Цитата
Сообщение от Alex Savchuk
Посмотреть сообщение

Нам дали задание это сделать через Chart

Ну так и делайте через Chart. Если добавить на форму этот элемент и ничего не менять, то надо будет добавить после InitializeComponents():

C#
1
2
3
4
5
for (double x = -10; x <= 10; x += 0.2)
{
    double y = -1 * Math.Pow(x, 3) + 3 * Math.Pow(x, 2) + 3;
    chart1.Series[0].Points.Add(new DataPoint(x, y));
}



1



0 / 0 / 0

Регистрация: 16.11.2021

Сообщений: 39

17.05.2022, 17:14

 [ТС]

5

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

Добавлено через 9 минут
точнее, чтоб в отдельном окне вводили координаты и шаг, и при нажатии кнопки график менялся

Добавлено через 36 секунд
John Prick, А вы не знаете, как сделать так, чтоб при нажатии кнопки вывоился график для случайного промежутка?
точнее, чтоб в отдельном окне вводили координаты и шаг, и при нажатии кнопки график менялся



0



John Prick

2058 / 1591 / 678

Регистрация: 27.07.2012

Сообщений: 4,768

17.05.2022, 17:18

6

Лучший ответ Сообщение было отмечено Alex Savchuk как решение

Решение

Цитата
Сообщение от Alex Savchuk
Посмотреть сообщение

чтоб в отдельном окне вводили координаты и шаг, и при нажатии кнопки график менялся

Добавьте на форму 3 элемента TextBox. Перед расчётом графика возьмите эти значения для расчёта.

C#
1
2
3
4
5
6
7
8
9
double x0 = Convert.ToDouble(textBox1.Text);
double xn = Convert.ToDouble(textBox2.Text);
double h = Convert.ToDouble(textBox3.Text);
 
for (double x = x0; x <= xn; x += h)
{
    double y = -1 * Math.Pow(x, 3) + 3 * Math.Pow(x, 2) + 3;
    chart1.Series[0].Points.Add(new DataPoint(x, y));
}



1



0 / 0 / 0

Регистрация: 16.11.2021

Сообщений: 39

17.05.2022, 17:25

 [ТС]

7

John Prick, public Form1()
{
InitializeComponent();
}
private static double F1(double x)
{
return -1 * Math.Pow(x, 3) + 3 * Math.Pow(x, 2) + 3;
}

private void Form1_Load(object sender, EventArgs e)
{
double a = -10;
double b = 10;
double h = 0.2;
this.chart1.Series[0].Name = «-x^3 + 3x^2 + 3»;
for (double x = a; x <= b; x += h)
{
this.chart1.Series[0].Points.AddXY(x, F1(x));
}
}
Вот я писал для вывода графика таким образом. И как к этому коду сделать так, чтоб по нажатии кнопки, при вводе в эти TextBoxы выводился новый график. Я просто не очень понимаю что куда писать



0



2058 / 1591 / 678

Регистрация: 27.07.2012

Сообщений: 4,768

17.05.2022, 17:27

8

Цитата
Сообщение от Alex Savchuk
Посмотреть сообщение

чтоб по нажатии кнопки

Кнопку на форму добавил?



0



0 / 0 / 0

Регистрация: 16.11.2021

Сообщений: 39

17.05.2022, 17:30

 [ТС]

9

John Prick, да, кнопка есть,есть для неё действие клик



0



2058 / 1591 / 678

Регистрация: 27.07.2012

Сообщений: 4,768

17.05.2022, 17:43

10

Цитата
Сообщение от Alex Savchuk
Посмотреть сообщение

есть для неё действие клик

Вот туда и добавить код из этого сообщения. А Fomr1_Load оставить пустым.



1



0 / 0 / 0

Регистрация: 16.11.2021

Сообщений: 39

19.05.2022, 14:19

 [ТС]

11

John Prick, а уменя DataPoint пожчёркнута как ошибка, что делать с ней?



0



John Prick

2058 / 1591 / 678

Регистрация: 27.07.2012

Сообщений: 4,768

19.05.2022, 14:24

12

Лучший ответ Сообщение было отмечено Alex Savchuk как решение

Решение

Цитата
Сообщение от Alex Savchuk
Посмотреть сообщение

а уменя DataPoint пожчёркнута как ошибка

C#
1
using System.Windows.Forms.DataVisualization.Charting;



1



0 / 0 / 0

Регистрация: 16.11.2021

Сообщений: 39

19.05.2022, 14:42

 [ТС]

13

John Prick, мне пишет что double h = Convert.ToDouble(textBox3.Text); иссключение не обработано
System.FormatException: «Input string was not in a correct format.»

Добавлено через 1 минуту
John Prick, а нет, я понял в чёи проблема, спасибо большое

Добавлено через 1 минуту
John Prick, а вы бы не могли помочь ещё с этим кодом Случайно выводить пятиконечные звезды до тех пор пока не будет нажата клавиша Esc, я буду вам признателен очень



0



В этом уроке поговорим о том, как можно визуализировать информацию с помощью графиков. Для этого будем использовать приложение WPF и элементы Windows Forms.

Для успешного освоения материала рекомендуем вам изучить следующие понятия:

DB (Database), БД. Организованная структура, предназначенная для хранения, изменения и обработки взаимосвязанной информации, преимущественно больших объемов

Framework. Программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта

Windows Presentation Foundation. Аналог WinForms, система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), использующая язык XAML

Демонстрация работы с графиками в Windows Forms

На данном занятии будет разработано простое приложение Windows Forms для визуализации расходов пользователей. Пользователи распределяют затраты по разным категориям и хранят их в общей базе данных. Итогом работы приложения будет служить работающая форма, в которой для каждого пользователя можно построить диаграммы различных типов для визуализации их расходов по категориям. Основные шаги построения приложения:

  1. Разработка интерфейса приложения
  2. Настройка взаимодействия с базой данных
  3. Реализация обработки данных

Важно

В рамках примера используется готовая база данных с информацией о пользователях, их платежах и категориях расходов

Разработка интерфейса приложения

1. Устанавливаем структуру формы

Важно

Интерфейс приложения будет состоять из двух основных частей: области построения и области настройки параметров просмотра

2. Добавляем элементы настройки параметров просмотра

Важно

Элементами настройки параметров просмотра будут являться выпадающие списки, позволяющие выбрать пользователя и тип диаграммы

3. Подключаем библиотеки для просмотра диаграмм

Важно

Диаграмма будет визуализироваться с помощью элемента Chart из WindowsForms. Воспользоваться данным элементом можно после подключения библиотеки System.Windows.Forms.DataVisualization, расположенного во вкладке Assemblies (сборки)

4. Добавляем элементы управления диаграммой

Важно

Диаграмма будет располагаться внутри элемента WindowsFormsHost. Данный элемент добавляется из окна ToolBox простым перетаскиванием

5. Добавляем пространство имен для работы с элементом Chart

6. Добавляем дополнительные параметры просмотра

Важно

Дополнительными параметрами являются имя диаграммы, а также легенда

Настройка взаимодействия с базой данных

1. Реализуем взаимодействие с базой данных

Важно

Взаимодействие реализуется путем добавления элемента «ADO.NET Entity Data Model»

2. Настраиваем свойства подключения базы данных

3. Добавляем подключение к базе данных

Реализация обработки данных

1. Создаем область построения графиков

Важно

Сперва создается поле для контекста EntityFramework с инициализацией. Затем создается область построения диаграммы ChartArea и добавляется в соответствующую коллекцию в конструкторе MainWindow

2. Добавляем наборы данных

Важно

Для каждого набора данных (например, данные линии на графике) необходимо добавлять в коллекцию Series. В данном случае есть одна серия данных для отображения сумм платежей по категориям. Объект Series создается с указанием названия и необходимости отображения на диаграмме

3. Загружаем данные из базы

Важно

Данные о пользователях загружаются в выпадающий список. Также загружаются типы диаграммы из перечисления SeriesChartType

4. Реализуем адаптивное изменение интерфейса

Важно

При выборе другого значения в ComboBox будет вызываться метод UpdateChart()

5. Получаем выбранные значения в выпадающих списках

Важно

Значения получаются как currentUser и currentType

6. Обрабатываем данные диаграммы

Важно

Приведенный код описывает получение серии данных диаграммы из соответствующей коллекции Series, установку типа диаграммы и очистку предыдущих данных

7. Обрабатываем список категорий

Важно

Список категорий получается из базы данных. Далее, в цикле foreach для каждой категории значение точки диаграммы добавляется в Points. Координата X будет названием категории, а координата Y будет суммой платежа для выбранного пользователя в текущей категории

Результат работы программы

Вы познакомились с тем, как использовать основные элементы Windows Forms в приложении WPF. Теперь давайте перейдем от теории к практике!

Для закрепления полученных знаний пройдите тест

Для взаимодействия с базами данных используется технология

Для размещение элемента управления Windows Forms на странице WPF используется

WindowsFormsIntegration является

К сожалению, вы ответили неправильно

Прочитайте лекцию и посмотрите видео еще раз

Но можно лучше. Прочитайте лекцию и посмотрите видео еще раз

Вы отлично справились. Теперь можете ознакомиться с другими компетенциями

Предмет
исследований

  • Графические
    средства C#.

  • Компонент
    Chart

Контрольные
вопросы

  1. Класс
    Graphics (графический объект).

  2. Класс
    Font — шрифт.

  3. Класс
    Pen — перо.

  4. Класс
    Brush — кисть.

  5. Вывод
    текста. Метод DrawString.

  6. Вывод
    линии. Метод DrawLine.

  7. Компонент
    Chart – средство отбражения диаграмм.

  8. ChartAreas
    – области диаграммы.

  9. Series
    – ряды диаграммы.

  10. Сколько
    рядов надо для рисования N
    графиков в одной области.

  11. Legendes
    – лененды диаграммы..

  12. Задание
    функции для отображения в компоненте
    Chart.

  13. Стили
    отображения диаграмм.

  14. Использование
    легенды в компоненте Chart.

24.1.Текст и график функции в форме

Создать
программу вывода текста и рисования в
форме графиков функций. Проект –
WindowsForm приложение.

Пример.
Создать программу рисования в форме
графика функции с поясняющим текстом.
Проект – WindowsForms приложение.
Функция — синус. Программа предусматривает
рисование графика в форме Form1 линиями
с помощью метода DrawLine. Над графиком с
помощью метода DrawString выводится поясняющий
текст. Кнопка Старт вызывает построение
графиков в окне.

Листинг
программы

using
System;

using
System.Drawing;

using
System.Windows.Forms;

namespace
GraphicFunction

{

public
partial
class
Form1
: Form

{

public
Form1()

{

InitializeComponent();

}

private
void
button1_Click(object
sender, EventArgs
e)

{

int
imax =100; //число точек
в периоде

int
t=2; //число периодов

int
amp=70; //амплитуда

int
h = 40; //отступ для
текста

int
x0=20; //начала
координат

int
y0 = h+amp;

double[]
f = new
double
[imax*t+10];

//
Функция

for
(int
i = 0; i < imax * t; i++)

{

f[i]
= Math.Round(amp
* Math.Sin(2
* Math.PI
/ imax * i));

}

//
Инструменты
рисования

Graphics
g = Graphics.FromHwnd(this.Handle);
// Где
рисуем

Pen
pen = Pens.Black;
//
Чем
рисуем

//
Текст
заголовка

g.DrawString(«График
синусоиды»,
new
Font(«Arial»,
14),

Brushes.Red,
0, 0); //Вывод
текста

//textBox1.Text
= «График синусоиды»;

//Рисуем
график

g.DrawLine(pen
, x0, y0, x0+imax*t, y0); //Рисуем
ось
X

g.DrawLine(pen,
x0, y0-amp, x0, y0+amp); //Рисуем
ось
Y

for
(int
i = 0; i < imax * t; i++) //Рисуем
график

{

int
f1 = y0 — (int)f[i];
//Координата
Y[i]

int
f2 = y0 — (int)f[i
+ 1]; //Координата
Y[i+1]

g.DrawLine(pen,
x0+i, f1, x0+i+1, f2);

}

}

private
void
Form1_Load(object
sender, EventArgs
e)

{

}

}

}

При
прогоне программы получается результат:

24.2.Компонент Chart

Создать
программу отображения диаграммы двух
функций с использованием компонента
Chart. Проект – WindowsForm
приложение.

Пример.
Создать программу отображения диаграммы
двух функций sin(x) и cos(x) с
использованием компонента Chart. Проект
– WindowsForm приложение. Стиль
линий Spline.

Создаем
– WindowsForm приложение. В
форму заносим компоненты chart1
для отображения диаграммыи button1 для
создания стартового обработчика событий.

В
окне свойств Button1 задаем его свойству
Text значение Старт.

В
окне компонента Chart1 в раэделе Seies
определяем две серии:

  • Для
    функции sin(x) с именем
    Синус.

  • Для
    функции cos(x) с именем
    Косинус.

Двойным
щелчком по кнопке создаем в окне кода
шаблон обработчика собыия нажатия
кнопки. Функциоинальная часть обработчика
включает задание в цикле наборов данных
для серий.

Листинг
программы

using
System;

using
System.Windows.Forms;

namespace
Chart

{

public
partial
class
Form1
: Form

{

public
Form1()

{

InitializeComponent();

}

private
void
chart1_Click(object
sender, EventArgs
e)

{

}

private
void
button1_Click(object
sender, EventArgs
e)

{

double
y = 0;

for
(int
x = 0; (x <= 19); x++)

{

y
= Math.Sin(Math.PI
/ 5 * x);

chart1.Series[«Синус»].Points.AddXY(x,
y);

y
= Math.Cos(Math.PI
/ 5 * x);

chart1.Series[«Косинус»].Points.AddXY(x,
y);

}

}

private
void
Form1_Load(object
sender, EventArgs
e)

{

}

}

}

При
запуске программы отображается форма,
в которой .прорисовываются диаграмма
с двумя поименованными сериями и кнопка
старта. Самаих графиков пока нет, так
как данные для них формирует обработчик.

Кнопка
button1 (Старт). Она вызывает
построение графиков в окне.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Visual C++/CLI: рисуем простой график функции в PictureBox

В этом примере мы хотим нарисовать простой график на компоненте PictureBox «по точкам», а не с использованием готовой компоненты Chart.

Создав проект Windows Forms в любой версии Studio 2012 и выше, придадим окну формы удобный размер и перетащим туда компоненту TableLayoutPanel, установим ей свойство Dock=Fill, затем удалим последнюю строку так, чтобы осталось 2 столбца, первому столбцу зададим относительную ширину 100%, а второму — абсолютную ширину 100 пикселов (как выполнять такие действия, показано в этой заметке).

В правую ячейку TableLayoutPanel перетащим кнопку Button и привяжем её ко всем краям формы, кроме нижнего (свойство Anchor = Top, Left, Right, свойство Dock=Top).

В левую ячейку перетащим PictureBox и также установим ему Dock=Fill. Внешний вид полученной формы показан на рисунке:

Вид формы приложения

Вид формы приложения

Так как экранный шаг в пикселах в условии не задан, установим его в переменной unit. Для порядка шаблон отрисовываемой функции double f(double x) опишем как делегат соответствующего типа. Весь этот код можно поместить после директивы #pragma endregion в файле MyForm.h:

#pragma endregion
 public: int unit = 50; //шаг в пискелах
 public: delegate double DelegatePtr(double); //тип функции для рисования

 private:  double f(double x) { //конкретная функция, которую рисуем
  double y=Math::Cos(Math::Sqrt(x));
  return Double::IsNaN(y)?0:y;
 }

Нам придётся запрограммировать только щелчок по кнопке, после двойного щелчка по ней в конструкторе создастся обработчик события

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

}

в который мы и поместим весь показанный ниже код с комментариями.

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
  int pW = pictureBox1->Width, pH = pictureBox1->Height;
  Bitmap ^img = gcnew Bitmap(pW, pH); 
   //создаем поверхность для рисования (изображение) с размером элемента управления PictureBox
  Graphics ^g = Graphics::FromImage(img); //создаем устройство для рисования на поверхности
  //рисуем сетку:
  for (int i = 0; i < pW; i += unit) g->DrawLine(Pens::Blue, i, 0, i, pH);
  for (int i = 0; i < pH; i += unit)  g->DrawLine(Pens::Blue, 0, i, pW, i);
  //находим середину и рисуем линии осей:
  int mX = int(pW / 2 - pW / 2 % unit);
  int mY = int(pH / 2 - pH / 2 % unit);
  g->DrawLine(Pens::Red, mX, 0, mX, pH);
  g->DrawLine(Pens::Red, 0, mY, pW, mY);
  g->ScaleTransform(1, -1); //переворачиваем ось Y для удобства восприятия
  g->TranslateTransform((float)mX, -(float)mY); //смещаем нулевую координату на пересечение осей
  //рисуем график:
  DelegatePtr^ f = gcnew DelegatePtr(this, &MyForm::f);
  double x1 = -1., x2 = 10., s = 0.25; //границы рисования
  double x = x1;
  double y;
  System::Collections::Generic::List<PointF> ^Points = 
   gcnew System::Collections::Generic::List<PointF>(); //коллекция точек графика
  while (x < x2) {
   y = f(x);
   Points->Add(PointF(x*unit, y*unit));
    //добавляем точку в коллекцию. Полученные координаты сразу переводим в экранные единицы
   x += s;
  }
  g->DrawLines(Pens::Green, Points->ToArray()); //рисование линий графика
  delete g; //освобождение ресурсов устройства рисования
  this->pictureBox1->Image = img; //присвоение и отображение изображения в PictureBox
}

График перерисовывается каждый раз при нажатии кнопки. Пожалуй, это даже экономичнее по ресурсам, чем использование события Paint.

 Скачать этот проект Visual Studio 2015 в архиве .zip, развернуть, не создавая новой папки (7 Кб)

Можно подойти к задаче и по-другому, заранее задав интервал изменения переменной по оси X, а шаг по ней (как и по оси Y) рассчитывая так, чтобы он был равен одному пикселу. Тогда при той же самой форме пользовательская часть кода примет следующий вид (для простоты исключено рисование линий сетки).

#pragma endregion 
 /* простой график на PictureBox, шаг по x = 1 пикселу */

 private: delegate double Function (double); //указатель на функцию
 private: double f (double x) { return Math::Sin(x); } //сама функция
 private: double x1 =-2*Math::PI, x2= 2*Math::PI, xstep, y1, y2, ystep;
  //границы, в реальности границы по x введены откуда-то извне

 private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
  int pw = pictureBox1->Width, ph = pictureBox1->Height; //размеры полотна
  Function ^f = gcnew Function(this, &MyForm::f); //рисуемая функция
  xstep = (x2 - x1) / pw; //шаг по x = 1 пикселу
  y1 = y2 = f(x1);
  for (double x = x1; x <= x2; x += xstep) { //ищем макс. и мин. по y
   double y = f(x); if (y>y2) y2 = y; if (y<y1) y1 = y;
  }
  ystep = (y2 - y1) / ph; //шаг по y также = 1 пикселу (искажение пропорций)
  double xcoeff = pw / (x2 - x1), ycoeff = ph / (y2 - y1);
   //коэффициенты пересчета физических координат в пиксельные
  Bitmap ^img = gcnew Bitmap(pw,ph); //картинка для рисования на ней
  Graphics ^g = Graphics::FromImage (img); //контекст картинки
  int mx = - x1 * xcoeff, my = - y1 * ycoeff; //начало координат
  g->DrawLine(Pens::Red,mx,0,mx,ph);g->DrawLine(Pens::Red,0,my,pw,my); //оси
  System::Collections::Generic::List <PointF> ^Points = 
   gcnew System::Collections::Generic::List <PointF>(); //коллекция точек
  double x = x1, y;
  while (x <= x2) { y = f(x); Points->Add(PointF((x-x1)*xcoeff,(y2-y)*ycoeff)); x += xstep;  }
  g->DrawLines(Pens::Green,Points->ToArray()); //отрисовка
  this->pictureBox1->Image = img; //назначили картинку полотну
 }

Вид формы приложения (2)

Вид формы приложения (2)

10.11.2017, 13:12 [17214 просмотров]


К этой статье пока нет комментариев, Ваш будет первым

Всем привет,
Сегодня поработаем с графиками, точнее будем строить графики на основе данных из каких либо источников, хотя обычно данные берутся из БД, для примера будет достаточно коллекции.

Вот готовый проект AnalitikProg, если лень читать.

Итак, поехали.
1) Создаем проект WinForm называем его AnalitikProg, платформа .Net Framework 4.7.2
2) Св-ву Name формы присваиваем значение «AnalitikProg».
3) Добавляем на форму элемент ToolStrip, делаем кнопке Display равным «Text».

4) Выделяем кнопку и меняем св-во name на «toolStripButtonGenerate», а св-ву Text значение «Сформировать график».

5) Теперь необходимо добавить nuget-пакет, который называется LiveChart.

6) Обратим внимание, что в панели элементов появились новые элементы:

7) Перетаскиваем на форму элемент CartesianChart и его св-ву Dock выставим Fill.
8) Теперь дважды нажимаем кнопку «Сформировать график», переходим в код и за пределами метода обработчика нажатия по кнопке создаем класс Data, так сказать «заготовочка» для будущей коллекции со значения для графика.

{
  public int values { get; set; }
  public DateTime date { get; set; }
}

9) Перед методом Form1 создаем переменную типа List<Data> , а в методе Form1 после компонента initializeComponent() инициализируем обобщенную коллекцию в которой будут содержаться элементы типа Data и заполним ее данными.
Значит легенда такая, программа нужна трейдеру, чтобы просматривать динамику изменения его заработка.

datas = new List<Data>()
{
new Data(){ values=35000,date=new DateTime(2020,01,01) },
new Data(){ values=30000,date=new DateTime(2020,01,02) },
new Data(){ values=40000,date=new DateTime(2020,01,03) },
new Data(){ values=55000,date=new DateTime(2020,01,04) },
new Data(){ values=55000,date=new DateTime(2020,01,05) },
new Data(){ values=30000,date=new DateTime(2020,01,06) },
new Data(){ values=35000,date=new DateTime(2020,01,07) },
new Data(){ values=42000,date=new DateTime(2020,01,08) },
new Data(){ values=57000,date=new DateTime(2020,01,09) },
new Data(){ values=88000,date=new DateTime(2020,01,10) },
new Data(){ values=51000,date=new DateTime(2020,01,11) },
new Data(){ values=65000,date=new DateTime(2020,01,12) },
new Data(){ values=100000,date=new DateTime(2020,01,13) },
new Data(){ values=75000,date=new DateTime(2020,01,14) },
new Data(){ values=88000,date=new DateTime(2020,01,15) },
new Data(){ values=92000,date=new DateTime(2020,01,16) },
new Data(){ values=99000,date=new DateTime(2020,01,17) },
new Data(){ values=87000,date=new DateTime(2020,01,18) },
new Data(){ values=110000,date=new DateTime(2020,01,19) }
};

Сейчас код выглядит так:

10) Теперь переходим к кнопке, кликаем по ней 2 раза и забиваем в нее следующий код.

SeriesCollection series = new SeriesCollection(); //отображение данных на график. Линии и т.д.
ChartValues<int> zp = new ChartValues<int>(); //Значения которые будут на линии, будет создания чуть позже.
List<string> date = new List<string>(); //здесь будут храниться значения для оси X
foreach (var item in datas) //Заполняем коллекции
{
  zp.Add(item.values);
  date.Add(item.date.ToShortDateString());
}
cartesianChart1.AxisX.Clear(); //Очищаем ось X от значений по умолчанию
cartesianChart1.AxisX.Add(new Axis //Добавляем на ось X значения, через блок инициализатора.
{
  Title = "Дата",
  Labels = date
});

LineSeries line = new LineSeries(); //Создаем линию, задаем ей значения из коллекции
line.Title = "";
line.Values = zp;

series.Add(line); //Добавляем линию на график
cartesianChart1.Series = series; //Отрисовываем график в интерфейсе

12) В общем то все, осталось запустить и проверить

Могу порекомендовать сходить на сайт поддержки библиотеки https://lvcharts.net там есть много интересной информации и раскрыты все возможности библиотеки.

Если понравилось — ставь лайк!

Example. Now we can use the Chart. In the next step, we will use the Form1_Load event handler to initialize the Chart we just added. To add Form1_Load, double-click on the Form window in Visual Studio.

Array: In Form1_Load, we assign an array of strings (Series) and an array of integers (Points).

For: In the for-loop, we add the strings to the Series collection and add the integers to the Points collections on those Series.

For

Tip: The loop results in two Series: a Cats series with a Point of 1, and a Dogs series with a Point of 2.

Info: These are reflected in a bar graph, which is shown in this page’s screenshot.

Example that sets Chart control up: C#

using System;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
// Data arrays.
string[] seriesArray = { «Cats», «Dogs» };
int[] pointsArray = { 1, 2 };

// Set palette.
this.chart1.Palette = ChartColorPalette.SeaGreen;

// Set title.
this.chart1.Titles.Add(«Pets»);

// Add series.

for

(int i = 0; i < seriesArray.Length; i++)
{
// Add series.
Series series = this.chart1.Series.Add(seriesArray[i]);

// Add point.
series.Points.Add(pointsArray[i]);
}
}
}
}

Понравилась статья? Поделить с друзьями:

Вот еще несколько интересных статей:

  • Как написать знак рубля на клавиатуре windows 10
  • Как нарезать образ windows на флешку ultraiso
  • Как написать драйвер для принтера под windows 10 64 bit
  • Как нарезать образ windows на диск
  • Как написать драйвер для usb устройства под windows 10

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии