Как создать интерактивные графики в Windows Forms приложении на C#. Какие библиотеки лучше использовать для визуализации данных. Чем отличаются различные типы графиков и диаграмм. Как настроить внешний вид и функциональность графиков.
Основные способы построения графиков в Windows Forms
При разработке приложений Windows Forms на C# часто возникает необходимость визуализации данных в виде графиков и диаграмм. Существует несколько основных подходов к решению этой задачи:
- Использование встроенного элемента управления Chart из пространства имен System.Windows.Forms.DataVisualization
- Применение сторонних библиотек для построения графиков, таких как ZedGraph, OxyPlot, LiveCharts
- Реализация собственных алгоритмов отрисовки с помощью GDI+
Каждый из этих способов имеет свои преимущества и недостатки. Выбор оптимального варианта зависит от конкретных требований проекта.
Встроенный элемент управления Chart в Windows Forms
Элемент управления Chart предоставляет базовые возможности для создания различных типов графиков и диаграмм непосредственно в Windows Forms приложении. Он доступен начиная с .NET Framework 4.0.

Основные преимущества использования Chart:
- Простота интеграции и настройки через визуальный дизайнер форм
- Поддержка множества типов диаграмм — линейных, столбчатых, круговых и др.
- Возможность динамического обновления данных
- Встроенные инструменты для настройки внешнего вида
Чтобы начать использовать Chart, достаточно перетащить его из панели элементов Toolbox на форму и настроить через окно свойств.
Популярные сторонние библиотеки для построения графиков
Несмотря на удобство встроенного Chart, для более сложных задач часто используются специализированные библиотеки. Рассмотрим некоторые из наиболее популярных:
ZedGraph
ZedGraph — мощная open-source библиотека для создания 2D графиков. Ее ключевые особенности:
- Высокая производительность и скорость отрисовки
- Гибкие возможности настройки внешнего вида
- Поддержка множества типов графиков
- Простой программный интерфейс
OxyPlot
OxyPlot — кроссплатформенная библиотека с открытым исходным кодом. Ее преимущества:
- Поддержка WPF, Windows Forms, Xamarin
- Возможность экспорта графиков в различные форматы
- Обширная документация и примеры
- Активное сообщество разработчиков
LiveCharts
LiveCharts специализируется на создании анимированных и интерактивных графиков. Особенности библиотеки:

- Встроенная анимация при обновлении данных
- Поддержка сенсорного ввода
- Возможность создания кастомных графиков
- Интеграция с MVVM паттерном
Реализация собственных алгоритмов построения графиков
В некоторых случаях может потребоваться разработка собственных алгоритмов отрисовки графиков. Это дает максимальную гибкость, но требует глубокого понимания графического программирования.
Основные шаги при создании кастомного графика:
- Определение системы координат и масштабирование данных
- Отрисовка осей и вспомогательных линий
- Построение графика на основе входных данных
- Добавление подписей и легенды
Для реализации используются возможности GDI+, доступные через класс System.Drawing.Graphics.
Выбор оптимального решения для построения графиков
При выборе способа построения графиков в Windows Forms приложении следует учитывать несколько факторов:
- Сложность и типы требуемых графиков
- Необходимость интерактивности и анимации
- Объем обрабатываемых данных
- Требования к производительности
- Опыт команды разработчиков
Для большинства проектов оптимальным выбором будет использование специализированных библиотек, таких как ZedGraph или OxyPlot. Они предоставляют широкие возможности при относительно небольших затратах на интеграцию и изучение.

Настройка внешнего вида и функциональности графиков
Независимо от выбранного способа построения графиков, важно уделить внимание их оформлению и удобству использования. Основные аспекты, требующие настройки:
- Цветовая схема и стиль линий
- Подписи осей и данных
- Легенда и заголовок графика
- Масштабирование и прокрутка
- Всплывающие подсказки
Большинство библиотек предоставляют программный интерфейс для тонкой настройки этих параметров.
Оптимизация производительности при работе с большими объемами данных
При визуализации больших массивов данных могут возникнуть проблемы с производительностью. Для их решения применяются следующие техники:
- Агрегация и предварительная обработка данных
- Использование виртуализации для отображения только видимой части графика
- Асинхронная загрузка и обновление данных
- Оптимизация алгоритмов отрисовки
Правильное применение этих методов позволяет существенно повысить отзывчивость приложения даже при работе с миллионами точек данных.
Интеграция графиков с источниками данных
Для создания динамических графиков необходимо обеспечить их связь с источниками данных. Это может быть реализовано несколькими способами:

- Прямое подключение к базам данных через ADO.NET
- Использование ORM систем, таких как Entity Framework
- Получение данных через веб-сервисы
- Чтение данных из файлов (CSV, JSON, XML)
Важно организовать эффективное обновление графиков при изменении исходных данных, возможно с применением паттернов Observer или MVVM.
Графика и рисование — Windows Forms .NET Framework
Twitter LinkedIn Facebook Адрес электронной почты
- Статья
Общеязыковая среда выполнения (CLR) использует расширенную реализацию интерфейса графических устройств Windows (GDI) под названием GDI+. С помощью GDI+ можно создавать графические элементы, рисовать текст и управлять графическими изображениями в виде объектов. Интерфейс GDI+ отличается высоким быстродействием и удобен в использовании. GDI+ можно использовать для отрисовки графических изображений в формах и элементах управления Windows Forms. Хотя GDI+ нельзя использовать непосредственно в веб-формах, графические изображения можно выводить через элемент управления веб-сервера Image.
В этом разделе представлены разделы по основам программирования с использованием GDI+. Хотя он не является полным справочником, в нем содержатся сведения об объектах Graphics, Pen, Brush и Color и способах выполнения таких задач, как рисование фигур, создание текста, отображение рисунков. Дополнительные сведения см. в разделе Справочник по GDI+.
Если вы хотите немедленно приступить к работе, см. статью Приступая к программированию графики. Она содержит разделы, посвященные использованию кода для рисования линий, фигур, текста и других элементов в формах Windows Forms.
в этом разделе
Общие сведения о графике
Общие сведения об управляемых классах, связанных с графикой.
Управляемый код GDI+
Сведения об управляемых классах GDI+.
Использование управляемых графических классов
Демонстрируется выполнение различных задач с помощью управляемых классов GDI+.
Справочник
System.Drawing
Предоставляет доступ к основным графическим функциям GDI+.
System.Drawing.Drawing2D
Расширенные функциональные возможности для создания двухмерной и векторной графики.
System.Drawing.Imaging
Предоставляет расширенные графические функции GDI+.
System.Drawing.Text
Предоставляет расширенный набор типографических функций GDI+. Классы в этом пространстве имен позволяют создавать и использовать коллекции шрифтов.
System.Drawing.Printing
Функции печати.
Рисование и отрисовка пользовательского элемента управления
Подробные сведения о способах написания кода для рисования элементов управления.
Средства построения графиков для .NET / Хабр
Не так давно пришлось столкнуться с тривиальной задачей — найти решение, которое позволит рендерить рисунки графиков для .NET. Сразу оговорюсь, что меня интересовали только линейные графики. Камнем преткновения, который подтолкнул к переделыванию уже существующего решения (это были графики, встроенные в rdlc отчеты), было быстродействие. В целом, к искомому решению были предъявлены такие требования:
- Необходимо оставить данную оптимизацию незамеченной для конечного пользователя, следовательно, решение должно быть широко настраиваемым, чтобы, в конечном счете, выглядеть так же, как и предшественник.
- Работать быстро (ну понятно, пользователи не любят ждать).
- Желательно, быть бесплатным или с открытым исходным кодом. Покупка не стала бы большой проблемой, найди я отличное платное решение, но начать лучше с open source.
Что было сделано?
Погуглив, выяснилось, что существует достаточно много вариантов для решения данной задачи, и все они достаточно сильно отличаются по многим параметрам (размер сообщества, скорость работы, удобство). В процессе выбора решения было опробовано 8 бесплатных вариантов:
- DisLin. Кроссплатформенная библиотека (UNIX, Linux, FreeBSD, OpenVMS, Windows, Mac OSX и MS-DOS). Чрезвычайно мощная, гибкая, действительно стоит того, чтобы написать отдельную статью только о ней. Может быть, немного уступает своим конкурентам по степени читабельности кода (использует классический функциональный подход), но зато, благодаря этому, может быть легко портирована практически на любой язык. Имеет ванильные
тортыпорты на C, C++, Fortran 77, Fortran 90, Perl, Python, Ruby, Tgl, GCL (порт на C# — обычная библиотека с импортированными функциями). Бесплатная для некоммерческого использования. - Google Chart Sharp.
Обертка над Google Chart API для С#. На хабре уже были статьи о нем, поэтому в двух словах: бесплатный (с ограничением 50000 тыс. вызовов в день), работает очень шустро, присутствуют основные параметры для кастомизации. Среди плюсов: возможность использовать везде, где есть подключение к интернету, независимость от используемого языка / ОС. Основной минус — это, естественно, дополнительный round-trip данных по сети (если график Вам нужен ещё на сервере), что замедляет процесс.
- Microsoft Chart Controls. Нативный функционал от Microsoft, который был представлен общественности в далеком 2008 году. К тому времени уже существовал ряд решений от сторонних разработчиков, но это не помешало Ms Chart Controls быстро завоевать популярность среди разработчиков. И не удивительно, ведь они поставлялись с .NET framework, имели удачную архитектуру, были легко настраиваемыми и привлекательными на вид. По скорости уступают остальным, но, тем не менее, работают тоже вполне прилично.
- NPlot. Ещё одна open source библиотека. Правда, не самая быстрая и популярная — информацию по ней можно найти в Интернете, хотя и не так много, как, например, по Microsoft Chart Controls. Тем не менее, поигравшись с ней, у меня осталось довольно приятное послевкусие.
- OxyPlot. «Живой» кроссплатформенный open source, где можно даже зарепортить баг, на который, скорее всего, отреагируют. Доступен также в NuGet. Есть соответствующие контролы для WPF/Silverligth, WinForms, Metro. Плюшки, вроде экспорта напрямую в OpenXml и Pdf. Если Вам необходимо не «минутное» решение и возможность поправить его под себя, это решение для Вас.
- ZedGraph. Также «живой» open source, прямой конкурент для OxyPlot. По количеству поддерживаемых платформ (только Windows) и технологий (только WinForms и ASP .NET) уступает ему, но очень симпатичный и один из самых быстрых. Отличный выбор, если Вам надо «просто красивый график» и больше ничего.
- WebChart.
Бесплатный предшественник Microsoft Chart Controls. Насколько я вижу, мертвый с 2004 года. У него чуть более убогий функционал в сравнении с остальными решениями, но, так как он имеет некоторые внешние отличия от остальных, может быть вполне полезен.
- OpenMinded. Беплатный вариант от пользователя OpenMinded. Выглядит красиво. О производительности судить трудно, так как я не нашел возможности рендерить результирующий рисунок иначе как на жесткий диск. Но поскольку проэкт открытый, любой желающий может его доделать под себя, уверен — это не проблема.
Ещё в самом начале я решил, что надо собрать как можно больше вариантов в одном месте и протестить их на быстродействие, а уже после этого было очень жалко выбрасывать в корзину проделанную работу. Поэтому было решено оформить эту статейку и выложить то, что получилось, на GitHub. Таким образом, если возникла необходимость, Вы можете настроить каждое решение под себя и сразу же его проверить. Лично мне очень не хватало такой статьи в начале. Может быть, исходники вызовут улыбку у гуру, но новичкам, которые только вникают в .NET и ASP, они однозначно будут очень полезны.
Для сравнения скорости работы берутся дефолтные настройки графика, указывается разрешение выходного рисунка и ему скармливается фиксированное количество точек. Каждое решение прогоняется несколько раз, и в качестве реальной скорости берется среднее. Опять же, это достаточно субъективно, и, если Вы можете предложить более красивый подход, я с интересом выслушаю.
На моем ПК (Intel Core I5 3.10 GHz, 8gb ОЗУ, Windows 7 x64) вышло следующее распределение скорости работы:
№ |
Решение |
Количество итераций |
Суммарное время (сек) |
Среднее время на одну итерацию (сек) |
1 |
Dislin charts |
5 |
1.![]() |
0.38143814 |
2 |
Zed Graph |
5 |
2.750275 |
0.550055 |
3 |
NPlot |
5 |
3.1833183 |
0.63666366 |
4 |
Web Chart Control |
5 |
5.130513 |
1.0261026 |
5 |
Microsoft Chart Controls |
5 |
6.8456845 |
1.3691369 |
6 |
Oxy Plot |
5 |
7.0067006 |
1.40134012 |
7 |
Open minded plot |
5 |
8.257 |
1.6514 |
8 |
Google Sharp charting |
5 |
9.![]() |
1.96099608 |
Для различных входных параметров (разрешение изображения, количество точек на графике, параметры ПК, скорость интернета, фаза Луны и т.д.) результаты немного отличаются, поэтому Вы можете протестировать быстродействие у себя.
Я специально не делал глубокое сравнения фич и возможностей кастомизации, так как это довольно субъективная информация, которая сильно зависит от конкретной задачи. При необходимости, каждый желающий может провести полчаса, подебажить, посмотреть архитектуру решений, прикинуть, насколько легко их настроить под конкретные требования.
Если кто-то знает ещё бесплатные решения для графиков под .NET, которые пропущены в статье, — пишите в комментариях, и я постараюсь их добавить.
upd — (добавил решение от OpenMinded)
upd2 — (включил DevExpress в опрос)
Введение в приложения Windows Forms на C#
Улучшить статью
Сохранить статью
Нравится Статья
Anshul_Aggarwal
ученый
60 опубликованных статей
Улучшить статью
Сохранить статью
Нравится Статья
Windows Forms — это библиотека классов графического пользовательского интерфейса (GUI), которая входит в состав . Net Framework . Его основная цель — предоставить более простой интерфейс для разработки приложений для настольных компьютеров, планшетов и ПК. Его также называют WinForms . Приложения, разработанные с использованием Windows Forms или WinForms, известны как приложений Windows Forms , которые работают на настольном компьютере. WinForms можно использовать только для разработки приложений Windows Forms, а не веб-приложений. Приложения WinForms могут содержать различные типы элементов управления, такие как метки, списки, всплывающие подсказки и т. д.
Создание приложения Windows Forms с помощью Visual Studio 2017
- Сначала откройте Visual Studio, затем перейдите к File -> New -> Project , чтобы создать новый проект, а затем выберите язык Visual C# в меню слева. Щелкните Приложение Windows Forms (.NET Framework) в середине текущего окна. После этого укажите имя проекта и нажмите OK .
Здесь решение похоже на контейнер, который содержит проекты и файлы, которые могут потребоваться программе.
- После этого появится следующее окно, которое будет разделено на три части следующим образом:
- Окно редактора или главное окно: Здесь вы будете работать с формами и редактировать код. Вы можете заметить макет формы, которая теперь пуста. Вы дважды щелкните форму, после чего откроется код для этого.
- Окно обозревателя решений: Используется для перехода между всеми элементами решения. Например, если вы выберете файл из этого окна, то конкретная информация будет отображаться в окне свойств.
- Окно свойств: Это окно используется для изменения различных свойств выбранного элемента в обозревателе решений. Кроме того, вы можете изменить свойства компонентов или элементов управления, которые вы добавите в формы.
Вы также можете сбросить макет окна, установив его по умолчанию.
Чтобы установить макет по умолчанию, перейдите к Window -> Reset Window Layout в меню Visual Studio.
- Теперь , чтобы добавить элементы управления в приложение WinForms , перейдите на вкладку Toolbox в крайней левой части Visual Studio. Здесь вы можете увидеть список элементов управления. Чтобы получить доступ к наиболее часто используемым элементам управления, перейдите к Common Controls , представленному на вкладке Toolbox.
- Теперь перетащите необходимые элементы управления на созданную форму. Например, если вы можете добавить TextBox, ListBox, Button и т. д., как показано ниже. Нажав на конкретный перетащенный элемент управления, вы можете увидеть и изменить его свойства, присутствующие в самом правом углу Visual Studio.
На изображении выше вы можете видеть, что TextBox выбран, а его свойства, такие как TextAlign, MaxLength и т. д., открыты в самом правом углу. Вы можете изменить значения его свойств в соответствии с потребностями приложения.
Код элементов управления будет автоматически добавлен в фоновом режиме. Вы можете проверить Файл Form1.Designer.cs присутствует в окне обозревателя решений.
- Для запуска программы вы можете использовать клавишу F5 или кнопку воспроизведения , присутствующую на панели инструментов Visual Studio. Чтобы остановить программу, вы можете использовать кнопку паузы на панели инструментов. Вы также можете запустить программу, перейдя в меню Debug-> Start Debugging в строке меню.
Последнее обновление: 27 января, 2019
Нравится статья
Сохранить статью
Как использовать Chart Graph в видеолекции Visual C# Другие поставщики
Другое,
Обновлено 02 февраля, 19
Обзор
Начало работы и подключение к базе данных Mysql — Создать форму входа с помощью MySql — Защита паролем с помощью текстового поля — Добавить изображения и значки во фрейм — Как открыть вторую форму с помощью первой формы — Вставить/ Сохранить данные в базу данных — Редактировать/обновить данные из базы данных с помощью кнопки — Удаление выбранных данных из базы данных — Как использовать поле со списком — Как связать поле со списком со значениями базы данных — Значения базы данных в текстовом поле, если выбрано поле со списком — Как связать поле со списком с помощью База данных и отображать значения в текстовом поле, если выбрать ListBox — Показать значения базы данных в таблице или DataGridView — Как использовать диаграмму/график в Visual C# — Как связать диаграмму/график с базой данных — Динамически отображать (выполняется) текущую дату и время — Как использовать прогресс Панель и кнопка — Как изящно выйти из этого приложения — Окно сообщения с вопросом, хочет ли пользователь выйти — Изменить заголовок столбца datagridview при подключении Mysql — Отобразить выбранную строку из datagridview в TextBox в С# — Флажок, переключатель и групповое поле с базой данных в С# — Как использовать DateTimePicker и сохранить дату в базе данных — Как использовать OpenFileDialog и скопировать путь к файлу — Открыть текст файла в Textbox или richTextBox в C #
Поиск и выделение текста в Textbox или richTextBox в C# — Создание текстового файла и запись в него с помощью C# — Создание файла Excel (. XLS и .XLSX) из C# с помощью excellibrary — Как экспортировать данные из базы данных в файл Excel с помощью C# — Как импортировать файл excel в datagridview в C# — Как открыть и показать файл PDF внутри формы — Как запустить любой (.exe) файл в любом каталоге — Сделать приложение для звукового сигнала и Как добавить задержку в секундах — Как воспроизвести аудиофайл — Генератор случайных чисел в диапазоне C# — Как использовать и подключить Sqlite в проекте C# — Как добавить видеоклип (Windows Media Player) в форму MP3 Media Player в C# — Вставить изображение в базу данных — Извлечение изображений из базы данных — iTextSharp: как создать PDF-файл на C# — Как создать списки с помощью iTextSharp PDF-файла на C# — Работа с изображениями в PDF-файле с помощью C# — Добавить таблицу в существующий PDF-файл с помощью — Как получить данные Datagridview в pdf в C# — iMicrosoft Chart Controls to PDF with iTextSharp — Как автоматически открывать ITextSharp PDF после создания файла — Шифровать данные из простой строки в C# — Расшифровывать зашифрованные данные снова в простой текст
Включает
- Видео по запросу
- Войдите и отслеживайте свои успехи
- Пожизненный доступ
4,1 ( 11 )
Lecture Details
Потоковое построение графиков в Visual Studio C# с Windows Forms
C# Приложение Windows Forms
C# winform ChartGraph
c# — советы по отображению графиков и диаграмм
Практические диаграммы и графики C#
C# Graph Пример кода WinForm для графиков 90 144 Легкий способ для построения графиков с помощью C# и Visual Studio 2010
C# PowerPoint MS Graph-Chart Написать аналогичный
ChartGraph — DataGridView
Создание и отображение графиков и диаграмм в C#
Как перезагрузить диаграмму fastline с помощью Windows.