|
Навигация
|
Главная » Новости Работа с графиками и диаграммами (TChart, Series) (исходники)Источник: Realcoding Сегодня мы поговорим о рисовании графиков с помощью C++Builder. Эту тему я решил затронуть потому, что на днях пришлось быстро написать программу для того же самого рисования графиков, и я подумал что, наверное, не одному мне это пригодится.Итак, меньше слов - больше дела, начнем: Для работы с графиками и диаграммами в C++Builder существует компонент TChart (вкладка Additional), вот его мы и положим на форму. Далее если нажать на Chart1 правой кнопкой мыши, и выбрать Edit Chart… , то Вы увидите окно настроек графика, стоит заметить, что график можно настраивать и изменять параметры и в ходе выполнения программы, тоесть его настройка на ограничивается одним окошком. Первая закладка окна настройки называется Series, нажмите Add(Добавить), и откроется окно выбора: можете добавить разные линии столбцы и тому подобные вещи. Давайте выберем линию (на странице выбора - Line), вы сразу увидите, что наш Chart1 заполнила линия, значения выбираются случайные, но нажмите F9 - и вы ее не увидите! Дальше сделаем так, что бы мы смогли увидеть нашу линию в процессе работы программы. Давайте положим на форму кнопку (Button) и напишем для нее такой обработчик события: void __fastcall TForm1::Button1Click(TObject *Sender) { Series1->Add(13,22,clRed); }Теперь попробуйте откомпилировать программу(F9) и нажать кнопку(Button) - вы увидите нашу линию! Но тут есть один очень важный момент, в обработчике события мы работали уже не с Chart1, а с Series1, это очень важно. Замечу, если линий будет больше чем одна, тоесть Вы создадите Series2, Series3, то и работать в коде вы будете тоже с ними. Давайте усложним немного нашу программу и сделаем ее динамичней. На форму добавляем два компонента TEdit - в них мы будем вводить значения по оси Y и Х. Для кнопки изменяем обработчик события на такой: void __fastcall TForm1::Button1Click(TObject *Sender) { if(Edit1->Text == "") { ShowMessage("Вы не ввели значение Y !"); return ; } if(Edit2->Text == "") { ShowMessage("Вы не ввели значение X !"); return ; } int y; int x; y = Edit1->Text.ToInt(); x = Edit2->Text.ToInt(); Series1->Add(y,x,clBlue); Edit1->Text = ""; Edit2->Text = ""; }Теперь подробно разберем написанное: Сначала мы описали проверки, ввел ли пользователь хоть какие-то данные Х и Y. if(Edit1->Text == "") { ShowMessage("Вы не ввели значение Y !"); return ; } if(Edit2->Text == "") { ShowMessage("Вы не ввели значение X !"); return ; }Далее мы указали две переменных х и y. Но тут есть один важный момент, просто присвоить х = Edit1->Text , нельзя. Надо конвертировать AnsiString в Int32: y = Edit1->Text.ToInt(); x = Edit2->Text.ToInt(); Тоесть мы представляем текст Едита, как число. А дальше все похоже на наш первый пример: Series1->Add(13,22,clRed); Только вместо готовых чисел, мы добавляем х и у которые пишем в Едиты. Откомпилируйте программу и увидите, как прорисовывается линия по ходу добавления туда значений. Если разберетесь в TChart более подробно, то сможете: удалять последние веденные значения, убирать добавлять сетку, менять цвета линий, менять толщину линий и так далее. Третья мировая война ведется за лидерство в нанотехнологиях. Управление отношениями с клиентами(СRM) (документация). Роль Web-дизайна в разработке эффективной e-commerce-стратегии. Киберпреступники обокрали московский завод на 8 млн рублей. Программы лицензирования СА Technologies. Главная » Новости |
© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено. |