Элемент управления Диаграмма
Область применения:Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Элемент управления Chart — это объект диаграммы, предоставляющий события. При добавлении диаграммы на лист Visual Studio создает объект Chart, который можно запрограммировать напрямую, не обращаясь к объектной модели Microsoft Office Excel.
Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO для Excel. Дополнительные сведения см. в разделе «Функции», доступные по Приложение Office ликации и типу проекта.
Создание элемента управления
Элементы управления можно добавить Chart на лист Microsoft Office Excel во время разработки или во время выполнения в проекте уровня документа.
Вы можете добавить элементы управления Chart на лист во время выполнения надстройки VSTO. Дополнительные сведения см. в статье «Практическое руководство. Добавление элементов управления диаграммой на листы».
При закрытии листа динамически созданные объекты диаграммы не сохраняются на листе как элементы управления ведущего приложения. Дополнительные сведения см. в разделе «Добавление элементов управления в документы Office во время выполнения».
Форматирование
Любое форматирование, которое можно применить к Chart, также можно применить к элементу управления Chart. Это такие элементы форматирования, как границы, шрифты, тип диаграммы, линии сетки, условные обозначения и метки данных.
События
Для элемента управления Chart доступны следующие события:
См. также
- Примеры разработки Office и пошаговые руководства
- Расширение документов Word и книг Excel в надстройках VSTO во время выполнения
- Элементы управления в документах Office
- Добавление элементов управления в документы Office во время выполнения
- Автоматизация Excel с помощью расширенных объектов
- Практическое руководство. Добавление элементов управления диаграммы на листы
- Привязка данных к элементам управления в решениях Office
- Программные ограничения элементов узла и элементов управления узлами
Панель инструментов
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Окно панели элементов отображает элементы управления, которые вы можете добавлять в проекты Visual Studio. Чтобы открыть панель элементов, выберите Вид>Панель элементов в строке меню или нажмите клавиши CTRL+ALT+X.

Можно перетаскивать различные элементы управления на поверхность используемого конструктора, а также изменять размер и положение элементов управления.
Панель элементов отображается вместе с представлениями конструктора, например представлением XAML-файла или проектом приложения Windows Forms. На панели элементов отображаются только те элементы управления, которые можно использовать в текущем конструкторе. Вы можете выполнить поиск в пределах панели элементов, чтобы отфильтровать отображаемые элементы.
Для некоторых типов проектов панель элементов не содержит никаких элементов.
Целевая версия .NET проекта также влияет на набор элементов управления, отображаемых на панели элементов. При необходимости вы можете изменить требуемую версию .NET Framework на страницах свойств проекта. Выберите узел проекта в обозревателе решений, а затем в строке меню выберите Проект>Свойства имя_проекта. На вкладке Приложение выберите нужное значение в выпадающем списке Целевая платформа.

Управление окном панели элементов и элементами управления в нем
По умолчанию панель элементов свернута в левой части Visual Studio. Чтобы отобразить ее, наведите на нее курсор. Вы можете закрепить панель элементов, щелкнув на панели инструментов значок Закрепить, чтобы она оставалась открытой. Вы также можете открепить окно панели элементов и перетащить его в любое место на экране. Чтобы закрепить, открепить или скрыть панель элементов, щелкните ее правой кнопкой и выберите нужное действие.
Если панель элементов больше не отображается как свернутая в левой части интегрированной среды разработки Visual Studio, можно добавить ее обратно, выбрав Окно>Сбросить макет окна в строке меню.
Вы можете изменить порядок элементов на вкладке Панель элементов или добавить собственные вкладки, используя следующие команды в контекстном меню:
- Переименовать элемент. Переименование выбранного элемента.
- Представление списка. Отображение элементов управления в вертикальном списке. Если этот флажок не установлен, элементы управления размещаются горизонтально.
- Показать все. Отображение всех возможных элементов управления (не только тех, которые можно использовать в текущем конструкторе).
- Выбрать элементы. Открывает диалоговое окно Выбор элементов панели элементов, в котором можно указать элементы, отображаемые на панели элементов. Вы можете показать или скрыть элемент, установив или сняв его флажок.
- Сортировать элементы по алфавиту. Сортировка элементов по имени.
- Сброс панели. Восстановление параметров и элементов по умолчанию для панели элементов.
- Добавить вкладку. Добавление новой вкладки на панель элементов.
- Вверх. Перемещение выбранного элемента вверх.
- Вниз. Перемещение выбранного элемента вниз.
Создание и распространение пользовательских элементов управления панели элементов
Вы можете создать для панели элементов пользовательский элемент управления с помощью шаблона проекта на основе Windows Presentation Foundation или Windows Forms. Затем этот пользовательский элемент управления можно предоставить коллегам или опубликовать в Интернете с помощью установщика элементов управления панели элементов.
Следующие шаги
Перейдя по следующим ссылкам, вы узнаете о некоторых доступных вкладках панели элементов.
- Панель элементов, вкладка «Данные»
- Панель элементов, вкладка «Компоненты»
- Вкладка «HTML», панель элементов
См. также
Где находится chart в visual studio 2019
Компонента Chart (диаграмма) в Visual Studio довольно удобна, хотя для начинающих обычно сложно выбрать из множества её возможностей самые актуальные. К тому же, задокументировано-то всё лишь на MSDN.
Приведу несколько примеров, анализ которых поможет Вам быстро освоить основные приёмы работы с графиками и диаграммами в Visual C++. Все коды проверены в сборке Express 2010.
Пример 1. Добавим на форму компоненту Chart и выведем туда данные
//По нажатию кнопки 1 используем заранее добавленную компоненту Chart using namespace System::Collections::Generic; using namespace System::Drawing::Drawing2D; using namespace System::Drawing; Dictionary f1 = gcnew Dictionary(); ArrayList points = gcnew ArrayList(); Pen ^pen = gcnew Pen(System::Drawing::Color::Red); //создаем перо SolidBrush ^peen = gcnew SolidBrush(System::Drawing::Color::Green); //создаем кисть double x0=0,xmax=Math::PI,dx=Math::PI/100.; //границы графика по оси x и шаг f1.Clear(); using namespace System::Windows::Forms::DataVisualization::Charting; chart1->Series[0]->ChartType = SeriesChartType::Line; chart1->Series[0]->MarkerStyle = MarkerStyle::Circle; for (double x = x0; x Series[0]->Points->DataBindXY(f1.Keys, f1.Values); chart1->Series[0]->LegendText = L"функция"; chart1->Series[0]->Color = System::Drawing::Color::Green; chart1->Series[0]->BorderWidth = 2;
Пример 2. Сделаем красивый Chart программно, можно по нажатию новой кнопки на той же форме
using namespace System; using namespace System::Windows::Forms; using namespace System::Drawing; using namespace System::Windows::Forms::DataVisualization::Charting; //Общие свойства Chart ^myChart = gcnew Chart(); myChart->Parent = this; myChart->Left = 10; myChart->Top = 10; myChart->Width = (this->ClientSize.Width - 10); myChart->Height =(this->ClientSize.Height - 20); myChart->BringToFront(); //или chart1->Visible = false; ChartArea ^myChartArea = gcnew ChartArea(); //Область в которой будет построен график (их может быть несколько) myChartArea->Name = "myChartArea"; myChart->ChartAreas->Add(myChartArea); // График (их может быть несколько) Series ^mySeries1 = gcnew Series(); mySeries1->ChartType = SeriesChartType::Column; mySeries1->ChartArea = "myChartArea"; myChart->Series->Add(mySeries1); // Исходные данные для графика array ^yval1 = < 10, 6, 4, 6, 3 >; array ^xval = < "Январь", "Февраль", "Март", "Апрель", "Май" >; mySeries1->Points->DataBindXY(xval, yval1); //фон градиентом myChart->BackColor = System::Drawing::Color::MistyRose; myChart->BackGradientStyle = GradientStyle::DiagonalLeft; //границы в современном стиле myChart->BorderSkin->SkinStyle = BorderSkinStyle::Sunken; myChart->BorderSkin->PageColor = this->BackColor; //линии сетки покажем разными цветами myChartArea->AxisX->MajorGrid->LineColor = System::Drawing::SystemColors::ControlDark; myChartArea->AxisY->MajorGrid->LineColor = System::Drawing::SystemColors::ControlLight; //добавим второй график Series ^mySeries2 = gcnew Series(); mySeries2->ChartType = SeriesChartType::Point; mySeries2->ChartArea = "myChartArea"; myChart->Series->Add(mySeries2); array ^yval2 = < 4, 7, 3, 5, 5 >; mySeries2->Points->DataBindXY(xval, yval2);

Создаем программно красивый Chart в проекте C++ Windows Forms
Пример 3. Вытащим данные из Chart в TextBox
textBox1->Clear(); for each (DataPoint ^p in myChart->Series[0]->Points) < // Пробегаю по всем точкам первой кривой в графике textBox1->AppendText("X=" + p->XValue.ToString()+" "); for each (double yp in p->YValues) //Y является массивом, поэтому пробегаю по массиву textBox1->AppendText("Y=" + yp.ToString()); textBox1->AppendText(System::Environment::NewLine); >
Пример 4. Сделаем парсер выражений на основе чужого класса — это можно применить для создания полноценного «графопостроителя»
Добавим какой-нибудь не очень сложный парсер, например, класс parser.cpp от Chaos Master.
Кинем файлы parser.cpp и parser.h в папку с кодом (Имя_проекта/Имя_проекта, где находится Form1.h ). В меню скажем Проект — Существующий элемент и добавим файл .cpp (он д.б. в «Файлы исходного кода» Обозревателя решений)
Код выбранного нами парсера старый, так что нам придётся кое-что переделывать, например, строки char * в String ^ и обратно.
Добавим на форму компоненты textBox1 и label1 , напишем демо-код для применения парсера (вызывается по нажатию кнопки):
TParser *parser = new TParser(); try < String ^Str=textBox1->Text; double x=0; //а можно ведь в цикле взять очередную переменную откуда-то! Str=Str->Replace("x",x.ToString()); using namespace Runtime::InteropServices; char *p = (char*) (Marshal::StringToHGlobalAnsi (Str)).ToPointer (); parser->Compile(p); parser->Evaluate(); label1->Text= parser->GetResult().ToString(); > catch(TError error) < System::String ^ str1 = gcnew System::String (error.error); System::String ^ str2 = gcnew System::String (error.pos.ToString()); label1->Text= "Error " + str1 + " at position " + str2; return; >
Возможно, понадобится изменить какие-то ещё мелочи, например, я в файле parser.cpp раскомментарил строку
//#include "stdafx.h"
и изменил в коде exp(1) на exp(1.) — иначе не компилировалось в Studio.
Также ясно, что в начале файла form1.h добавлена строка
#include "parser.h"
Теперь в поле ввода можно писать любые допустимые парсером выражения с переменной x , например, cos(x)+1 , текущее значение переменной x из программы подставится в выражение и его результат динамически подсчитается.
На основе показанных кодов легко сделать, например, программу построения графиков с интерпретацией введённой пользователем функции. Скажем, если выражение для функции с аргументом, обозначенным x , вводится в текстовое поле textBox1 , код построения графика функции в пределах от 0 до 3.14 с шагом, равным 0.1 , будет таким:
TParser *parser = new TParser(); try < using namespace Runtime::InteropServices; using namespace System::Collections::Generic; using namespace System::Drawing::Drawing2D; using namespace System::Drawing; using namespace System::Windows::Forms::DataVisualization::Charting; Dictionary f1 = gcnew Dictionary(); chart1->Series[0]->ChartType = SeriesChartType::Line; chart1->Series[0]->MarkerStyle = MarkerStyle::Circle; for (double x=0; xText; Str=Str->Replace(«x»,x.ToString()); Str=Str->Replace(«,»,».»); //Если не та локаль //А лучше извлечь через Single::TryParse независимо от локали char *p = (char*) (Marshal::StringToHGlobalAnsi (Str)).ToPointer (); parser->Compile(p); parser->Evaluate(); f1.Add(x, parser->GetResult()); > chart1->Series[0]->Points->DataBindXY(f1.Keys, f1.Values); chart1->Series[0]->LegendText = textBox1->Text; chart1->Series[0]->Color = System::Drawing::Color::Green; chart1->Series[0]->BorderWidth = 2; > catch (TError error)
P.S. В более новой Studio 2019 пришлось сделать ^f1 вместо f1 и, соответственно, везде f1-> вместо f1.
Заменить фиксированные пределы и шаг на вводимые из формы — элементарно. Вот что вышло для теста:

Пример построения графика на основе парсера функций
Пример 5. Применение разрывов
На форму проекта помещена chart1 со свойством Dock = Fill , построение происходит по загрузке формы.
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) < using namespace System::Collections::Generic; using namespace System::Drawing::Drawing2D; using namespace System::Windows::Forms::DataVisualization::Charting; Dictionary ^f1 = gcnew Dictionary(); chart1->Series[0]->ChartType = SeriesChartType::Line; chart1->Series[0]->MarkerStyle = MarkerStyle::Circle; chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->Enabled = true; chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->CollapsibleSpaceThreshold = 25; chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->LineWidth = 2; chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->LineColor = Color::Red; chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->StartFromZero = StartFromZero::Auto; chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->Spacing = 2; for (double x = 0; x < 3.14; x += 0.1) < double f = tan(x); //#include f1->Add(x, f); > chart1->Series[0]->Points->DataBindXY(f1->Keys, f1->Values); chart1->Series[0]->LegendText = L"tan(x)"; chart1->Series[0]->Color = System::Drawing::Color::Green; chart1->Series[0]->BorderWidth = 2; >

разрывы по оси y на графике
04.02.2014, 17:03 [51745 просмотров]
Как очистить MS Chart?
Не могу перерисовать график chart в Visual Studio с новыми данными. Подскажите, пожалуйста, как очистить зону для рисования? Или надо удалять и создавать объект сначала?
Отслеживать
371 1 1 золотой знак 5 5 серебряных знаков 13 13 бронзовых знаков
задан 5 янв 2012 в 12:20
1 1 1 золотой знак 1 1 серебряный знак 1 1 бронзовый знак
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
chart.Series[0].Points.Clear();
Отслеживать
ответ дан 5 янв 2012 в 14:11
Nicolas Chabanovsky Nicolas Chabanovsky
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
Ну, очистили, а перерисовать как?
19 авг 2012 в 3:12
chart.Series[0].Points.AddXY(point_X, point_Y);
Отслеживать
371 1 1 золотой знак 5 5 серебряных знаков 13 13 бронзовых знаков
ответ дан 19 ноя 2012 в 13:33
11 2 2 бронзовых знака
После chart.Series[0].Points.Clear(); пишите chart.Series[0].Points.AddXY(значение X, значение Y); и в chart будут новые значения.
Отслеживать
ответ дан 23 фев 2016 в 13:54
451 2 2 золотых знака 6 6 серебряных знаков 19 19 бронзовых знаков
- chart
- visual-studio
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
