Slader |
Отправлено: 28.01.2005, 20:23 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
У кого-нибудь есть рабочий пример на С++? А то я с Delphi разобраться никак не могу, да и хелп к этому модулю не очень удобный. В общем, если у кого-то что-то есть — буду очень признателен! |
|
Doga |
Отправлено: 28.01.2005, 20:46 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
А в чём прблема? Конкретнее, PLZ. Я пользовался (теперь уже не пользуюсь т.к. знаю его теперь наизусть ) тем же хелпом что и Вы — вопросов не было...
|
|
Slader |
Отправлено: 06.02.2005, 21:21 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
Да, честно говоря, в принципе не понял как им пользоваться... Я вообще-то не программист, поэтому хелп мне мало о чем сказал...
Насколько я понял, нужно объявлять некие переменные как Tsp_DataSeries, Tsp_Axis,... и далее работать через них.
То есть, точки надо добавлять через обращение к сериям, правильно?
Вопрос — как быстро построить массив точек (есть указатель), если к нему еще необходимо применить приведение типа (short)? Модуль принимает данные как double?
И еще: что такое BaseLine и можно ли изменять положение графика (по вертикали) на XYPlot после того, как он (график) уже нарисован? |
|
Slader |
Отправлено: 07.02.2005, 23:38 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
2 Doga:
Как я понял, чтобы что-то нарисовать, нужно привязывать компоненты Tsp_XYLine, Tsp_SpectrLines,... к объекту Tsp_XYPlot. Привязал. А как добавить теперь на поле серии? Не понял, как установить свойство Plot. Чему оно должно быть равно?
Обязательно ли должна быть указана емкость серии? А то у меня очень много данных, количество которых неизвестно.
Можно ли изменять параметры уже нарисованных графиков (цвет, маркеры, толщина линии, тип линии, линейный преобразовать в спектральный)?
В общем, пока все очень туманно... |
|
Doga |
Отправлено: 08.02.2005, 20:18 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
Tsp_XYPlot — это то, где будут отображажатся Ваши профилограммы.
Данные профилограмм можно сразу записывать в обьекты Tsp_XYLine и
Tsp_SpectrLines (метод AddXY). Tsp_ndsXYLine то же смое что и Tsp_XYLine, за исключением того, что данные для отрисовки графика он получает из внешнего хранилища с помощью соответствующих обработчиков событий. Tsp_XYLine->Plot = Tsp_XYPlot — это и есть привязка, теперь Tsp_XYLine будет отображаться на Tsp_XYPlot, если
Tsp_XYLine->Active == true. Ёмкость серии — Tsp_XYLine->Count — свойство только для чтения. Методы Tsp_XYLine такие как
Clear
AdjustCapacity
SetCapacity
AddXY
AddXYArrays
InsertXY
ReplaceXY
Delete
DeleteRange
позволяют изменять вид серии на графике.
Если серия уже отрисована на графике то перерд применением вышеозначенных методовследует выставить:
Tsp_XYLine->LockInvalidate = true;
После, когда все преобразования профилограммы закончены:
Tsp_XYLine->LockInvalidate = false;
Tsp_XYLine->Active = true/false — показывает/убирает профилограмму с
экрана (графика).
Свойства Tsp_XYLine->LineAttr, Tsp_XYLine->PointAttr отвечают за вид профилограммы на графике (цвет, маркеры, толщина линии, тип линии...)
Если Вы точно знаете количество профилограмм на графике — можно просто накидать их на форму в дизайнтайме, а затем настроить их необходимым образом. В противном случае их лучше создавать динамически:
CODE |
Tsp_XYLine *XYLine = new Tsp_XYLine(NULL);
XYLine->Active = false;
XYLine->Clear();
XYLine->SetCapacity(100); //резерв на 100 елементов
for(int k = 0; k < 89; k++)
{
XYLine->AddXY((double)k, sin((double)k/100.0))
}
XYLine->AdjustCapacity(); //XYLine->Capacity = 89
XYLine->LineAttr->Color = clRed;
XYLine->PointAttr->Kind = ptRectangle;
XYLine->PointAttr->Color = clGreen;
...
XYLine->Plot = КакойНибудьTsp_XYPlot;
XYLine->Active = true;
|
Данные из Tsp_XYLine можно скопировать в Tsp_SpectrLines но не наоборот (возможно я это исправлю), т.к. последний не имеет методов GetX, GetY
BaseLine — отметка на оси Y выше которой будут рисоваться столбики спектрограммы (Tsp_SpectrLines ).
Tsp_XYPlot позволяет прокручивать и масштабировать график в рантайме с помощью мыши. Достаточно установить свойства
Tsp_XYPlot->Pan
Tsp_XYPlot->PanShiftKeys
Tsp_XYPlot->Zoom
Tsp_XYPlot->ZoomShiftKeys
Тут я, типа, устал К тому же вместе с библиотекой поставляются и примеры (правда на паскале) но для понимания работы они вполне сгодятся
|
|
Slader |
Отправлено: 08.02.2005, 22:39 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
Спасибо большое! Вроде разобрался. Меня просто ставили в тупик Series. Я думал, работать нужно через них, как в стандартном TChart.
А можно ли задавать маркеры не для всех точек, а только, допустим, для каждой 10-й или каждой 100-й?
Как привязать координаты Tsp_LineMarker к координатной сетке XYPlot? Или это никак не реализовано? И можно ли определить на графике координаты пересечения с маркером (в координатах графика, а не экрана)? И последнее: можно ли изменять подписи на осях? То есть, преобразовывать координаты?
|
|
|