Windows forms с построение графиков функций

Windows forms с построение графиков функций

БлогNot. Visual C++: построение графиков с интерпретацией введённой пользователем функции

Visual C++: построение графиков с интерпретацией введённой пользователем функции

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

Структура основной формы показана на рисунке, компоненты в panel1 перечислены по порядку в форме слева направо, что обеспечивает и нормальный порядок обхода полей по клавише табуляции.

Текстовым полям можно ограничить максимальный размер вводимой строки (свойство MaxLength ). Также panel1 расположена со свойством Dock=Top , а chart1 со свойством Dock=Fill . Это обеспечит нормальное взаимодействие компонент при изменении размеров окна. У самой формы выставлены Size и MinimumSize в значение 640; 400 — чтобы не «исчезали» кнопки при уменьшении окна.

Текстовым полям также даны значения по умолчанию, дробные части вещественных чисел при этом отделены точкой, а не запятой — будем так делать во всём проекте.

Как альтернатива, можно формировать вещественные значения полей динамически в зависимости от текущего разделителя (например, по событию Load формы 1):

В форму также добавлено глобальное свойство типа NumberFormatInfo

которое проинициализировано в её конструкторе:

Основная работа выполняется по нажатию на кнопку OK ( button1_Click ). Сначала проверяем допустимость введённых данных с помощью пары служебных методов Parse (получить число) и Check (проверить правильность записи функции, попробовав получить её значение от 1-го аргумента). Потом метод Go делает цикл по нужным значениям аргумента, формируя диаграмму. Если возникает ошибка парсера, о ней выводится сообщение, но программа не завершается. Просто в данных не будет какой-то пары значений.

Парсер тот же, что по ссылке выше. Вот полный код фрагмента:

Единственная новая по отношению к статье мелочь —

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

Добавим в проект вторую форму, куда можно будет выводить таблицы данных из диаграммы. Для этого обратимся к меню Проект — Добавить новый элемент — Форма Windows Forms и назовём её Form2 . На вторую форму добавим DataGridView , поставим ему свойства Dock=Fill , ScrollBars=Vertical и подготовим 2 столбца для вывода значений X и Y:

У этой формы будет единственный публичный метод — принять пару значений (x,y) и добавить их в таблицу:

Такой код метода Do работает при установке свойства

так как при значении true в таблице есть «дополнительная» пустая строка, которая тоже участвует в нумерации.

А вызывать этот метод будет вторая кнопка tab с первой формы (функция button2_Click ), при этом, сначала создастся новый экземпляр Form2 , чтобы можно было сравнить несколько таблиц:

Чтобы это сработало, заинклудьте заголовки второй формы в начале кода Form1.h :

Разумеется, сам парсер тоже подлючён. Это весь проект, можно собирать. Вот пример работы программы:

Выражения в парсере пишутся «не совсем на C++», загляните в файл parser.cpp и увидите это, ещё лучше, можете модифицировать код парсера под свои нужды. Ну и ещё много что можно улучшить, а я выложу проект в текущем «образовательном» состоянии.

Скачать этот проект Visual C++ в архиве .zip (21 Кб)

P.S. Для совместимости с Visual Studio 2015 достаточно сделать вот такой главный файл проекта Lab4.cpp :

Читайте также:  Iphone не синхронизирует контакты windows

Самые очевидные улучшения:

  • округлять вводимые и вычисляемые значения до некого удобного количества знаков в дробной части;
  • ограничить максимальное количество узлов сетки, например, некой константой maxCollectionSize . При «слишком большом» размере коллекции Dictionary приложение может зависнуть, а какой размер «слишком большой», знает только Studio;
  • найти минимальное и максимальное значения функции, назначив их затем меткам оси Y, выполнить ту же работу и для оси X;
  • следить, не получилось ли при расчёте «не-число» Y с помощью isnan(y) || isinf(y) ;
  • следить, не добавляются ли повторно в коллекцию элементы с тем же ключом, с помощью ContainsKey и т.д.

Вот набросок чуть «улучшенного» проекта для Studio 2015:

Скачать архив .zip с папкой этого проекта Visual Studio 2015 (21 Кб)

P.P.S. Решение едва ли предназначено для консольных приложений из-за не слишком удобных преобразований между строками библиотеки .NET и «классическими» строками std::string или char * . Тем не менее, поизвращаться, конечно, можно, скажем, вот такой код главного модуля проекта годится для консольного приложения Visual Studio 2015:

Как видно из примера, нам пришлось дополнительно написать собственную функцию str_replace для замены строки char * на другую строку, чтобы обеспечить циклическую подстановку значений x в табулируемую функцию f(x) .

А вот архив с этим проектом Visual Studio 2015, с точностью до платформы (выбирается вверху из списков «Конфигурации решения», «Платформы решения») должно работать везде 🙂 Конечно же, выражение для нужной функции от аргумента «x» малое и нужные пределы изменения аргумента вы можете не только задать константами, но и прочитать откуда-то (с той же консоли или из файла).

Скачать архив .zip с консольной версией проекта построения графика произвольной функции, Visual Studio 2015 (6 Кб)

14.03.2015, 12:47; рейтинг: 34622

Построение графика функций

Построение графика графика квадратичной функции
Как построить график квадратичной функции? Построил только простую параболу, как ее сдвигать? .

Построение графика функций
Порядок выполнения: 1)определить область определения функций 2)определить промежутки значений х.

Построение графика функций
Добрый вечер форумчане. Есть задачка -построить два графика функций f(x) на одной оси координат.

Построение графика функций
Дано задание: В Ms Excel построить совмещенные экспериментальные графики функций, заранее задав.

Решение

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Построение графика функций
Задание: Изменить программу так, чтобы оси выводились зеленым цветом, а график функции — синим.

Построение графика функций
Составить программу построения графика функций (вид уравнения выбирается из списка; диапазон.

Построение графика функций
Спасибо всем заранее,кто откликнулся. С чего начинать и чем заканчивать (в общем случае).

Построение графика функций
Необходимо разработать процедуру построения графика функции со следующими входными параметрами.

Построение графика произвольной функции c#

подскажите библиотеку для построения произвольных графиков функции в C#. т.е передаёшь например f(x)=sin(x) и на какой-нибудь канвас выводит синусоиду.

3 ответа 3

Зачем искать какие-то библиотеки, если это легко можно реализовать с помощью стандартных средств WinForms: для построения графиков использовать Chart, а для вычисления выражений — скажем, JavaScript в невидимом WebBrowser. Конечно, можно задействовать средства динамической компиляции и вычислять выражения на C#, но, я думаю, с JavaScript попроще будет.

Данный пример позволяет построить график функции, задаваемой любым JS-выражением:

Если перенастроить WebBrowser на новую версию IE через реестр, можно и прямо в нем графики строить, через HTML5 Canvas.

Все-таки здесь два этапа:

Рассчитать координаты точек на графике. Для этого есть mXparser http://mathparser.org/

Построить сам график из этих точек. Здесь миллион вариантов, выбирайте на вкус https://www.nuget.org/packages?q=Tags%3A%22plotting%22

Хоть это и не точный ответ на вопрос по поводу библиотек, т.к. сам тоже не нашел.
Есть один запасной для вас вариант:
Создаете функцию которая принимает x и строку фукнции, вида «x^2+2*x-3»
В строке, символ ‘x’ заменяете на значение переменной x что бы вышло что то типа:

Читайте также:  Экземпляр mac os sierra поврежден

Алгоритмом польской нотации считаете выражение, и возвращаете ответ. Примеры и объяснения польской записи хорошо доступны. Создаете массив для отображения графика. И в своем массиве для каждого элемента вызываете функцию, передавая x на промежутке (xmin;xmax), и сам вид функции как string.

Для самих графиков можно использовать Chart в .NET

Всё ещё ищете ответ? Посмотрите другие вопросы с метками c# winforms поиск-библиотек или задайте свой вопрос.

Связанные

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.4.16.39093

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

Программа построения графиков функции
Вывести на экран в графическом режиме графики двух функций интервале от до с шагом dx. Первая.

Программа для построения графиков
Доброго времени суток! Задача стоит следующая: дан сигнал e(t)=10+8cos(Wt-90)+4cos3(Wt-90).

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

Программа для построения графиков
Нужна библиотека для создания изображений. Т.Е. создаётся файл имеющий заданное разрешение и.

Длинные swith можно заменить функцией, которая ищет соответствующие символы в строке.
К примеру: на 44 строке switch можно заменить поиском в строке «0123456789.,+-*/()».
S,L,C — заготовки под sin cos log.

Пока сам копаюсь с win32 API. Зашел на твою тему, когда искал программы по построению графиков.

Комментарий модератора
Перенесено из C++ для начинающих

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Программа для построения графиков не работает
Нашёл на просторах интернета код для программы. Расставил формы что бы имена совпадали. Но прога.

Программа для построения графиков в полярной системе координат
Как сделать программу на делфи, которая будет стоить график при вводе какой-либо функции в полярной.

Программа для построения графиков в Microsoft Visual Studio
Среда разработки Microsoft Visual Studio. Смысл программы такой: имеется форма на которой.

Разработать программу для построения графиков функции
Разработать программу для построения графиков функции. Считать из файла, указанного пользователем.

Windows forms с построение графиков функций

БлогNot. Visual C++: построение графиков с интерпретацией введённой пользователем функции

Visual C++: построение графиков с интерпретацией введённой пользователем функции

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

Структура основной формы показана на рисунке, компоненты в panel1 перечислены по порядку в форме слева направо, что обеспечивает и нормальный порядок обхода полей по клавише табуляции.

Текстовым полям можно ограничить максимальный размер вводимой строки (свойство MaxLength ). Также panel1 расположена со свойством Dock=Top , а chart1 со свойством Dock=Fill . Это обеспечит нормальное взаимодействие компонент при изменении размеров окна. У самой формы выставлены Size и MinimumSize в значение 640; 400 — чтобы не «исчезали» кнопки при уменьшении окна.

Текстовым полям также даны значения по умолчанию, дробные части вещественных чисел при этом отделены точкой, а не запятой — будем так делать во всём проекте.

Как альтернатива, можно формировать вещественные значения полей динамически в зависимости от текущего разделителя (например, по событию Load формы 1):

В форму также добавлено глобальное свойство типа NumberFormatInfo

которое проинициализировано в её конструкторе:

Основная работа выполняется по нажатию на кнопку OK ( button1_Click ). Сначала проверяем допустимость введённых данных с помощью пары служебных методов Parse (получить число) и Check (проверить правильность записи функции, попробовав получить её значение от 1-го аргумента). Потом метод Go делает цикл по нужным значениям аргумента, формируя диаграмму. Если возникает ошибка парсера, о ней выводится сообщение, но программа не завершается. Просто в данных не будет какой-то пары значений.

Парсер тот же, что по ссылке выше. Вот полный код фрагмента:

Единственная новая по отношению к статье мелочь —

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

Добавим в проект вторую форму, куда можно будет выводить таблицы данных из диаграммы. Для этого обратимся к меню Проект — Добавить новый элемент — Форма Windows Forms и назовём её Form2 . На вторую форму добавим DataGridView , поставим ему свойства Dock=Fill , ScrollBars=Vertical и подготовим 2 столбца для вывода значений X и Y:

У этой формы будет единственный публичный метод — принять пару значений (x,y) и добавить их в таблицу:

Такой код метода Do работает при установке свойства

так как при значении true в таблице есть «дополнительная» пустая строка, которая тоже участвует в нумерации.

А вызывать этот метод будет вторая кнопка tab с первой формы (функция button2_Click ), при этом, сначала создастся новый экземпляр Form2 , чтобы можно было сравнить несколько таблиц:

Чтобы это сработало, заинклудьте заголовки второй формы в начале кода Form1.h :

Разумеется, сам парсер тоже подлючён. Это весь проект, можно собирать. Вот пример работы программы:

Выражения в парсере пишутся «не совсем на C++», загляните в файл parser.cpp и увидите это, ещё лучше, можете модифицировать код парсера под свои нужды. Ну и ещё много что можно улучшить, а я выложу проект в текущем «образовательном» состоянии.

Скачать этот проект Visual C++ в архиве .zip (21 Кб)

P.S. Для совместимости с Visual Studio 2015 достаточно сделать вот такой главный файл проекта Lab4.cpp :

Самые очевидные улучшения:

  • округлять вводимые и вычисляемые значения до некого удобного количества знаков в дробной части;
  • ограничить максимальное количество узлов сетки, например, некой константой maxCollectionSize . При «слишком большом» размере коллекции Dictionary приложение может зависнуть, а какой размер «слишком большой», знает только Studio;
  • найти минимальное и максимальное значения функции, назначив их затем меткам оси Y, выполнить ту же работу и для оси X;
  • следить, не получилось ли при расчёте «не-число» Y с помощью isnan(y) || isinf(y) ;
  • следить, не добавляются ли повторно в коллекцию элементы с тем же ключом, с помощью ContainsKey и т.д.

Вот набросок чуть «улучшенного» проекта для Studio 2015:

Скачать архив .zip с папкой этого проекта Visual Studio 2015 (21 Кб)

P.P.S. Решение едва ли предназначено для консольных приложений из-за не слишком удобных преобразований между строками библиотеки .NET и «классическими» строками std::string или char * . Тем не менее, поизвращаться, конечно, можно, скажем, вот такой код главного модуля проекта годится для консольного приложения Visual Studio 2015:

Как видно из примера, нам пришлось дополнительно написать собственную функцию str_replace для замены строки char * на другую строку, чтобы обеспечить циклическую подстановку значений x в табулируемую функцию f(x) .

А вот архив с этим проектом Visual Studio 2015, с точностью до платформы (выбирается вверху из списков «Конфигурации решения», «Платформы решения») должно работать везде 🙂 Конечно же, выражение для нужной функции от аргумента «x» малое и нужные пределы изменения аргумента вы можете не только задать константами, но и прочитать откуда-то (с той же консоли или из файла).

Скачать архив .zip с консольной версией проекта построения графика произвольной функции, Visual Studio 2015 (6 Кб)

14.03.2015, 12:47; рейтинг: 34622

Читайте также:  Waltr pro mac os
Оцените статью