C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Нужно поставить label на графике
** beginner
Отправлено: 15.09.2005, 17:10


Не зарегистрирован







Проблема такая, необходимо на графике, после того, как он построился, поставить лэйбл.
Я решил поступить так: рисую график, беру нужную точку, перевожу ее координаты в точку относительно левого верхнего угла Charta, перемещаю метку в это место.
Метка принадлежит Chart.
Вот, как я это делаю:
for (...) {
x1 = ...;
y1 = ...;
Series1->AddXY(x1,y1);
}
Label_p->Left = Series1->CalcYPosValue(x1);
Label_p->Top = Series1->CalcYPosValue(y1);

Но проблема в том, что метка не всегда оказывается в нужном месте, т.е. она сдвигается, но не попадает, куда мне нужно.
Момент второй: если переписать верхний код:
for (...) {
x1 = ...;
y1 = ...;
Series1->AddXY(x1,y1);
}
ShowMessage(AnsiString("sdfsdf"));
Label_p->Left = Series1->CalcYPosValue(x1);
Label_p->Top = Series1->CalcYPosValue(y1);

Т.е. добавить какое-то сообщение, то метка встает точно на место.
И еще, построение графика и расположение метки происходит по щелчку на кнопке, так вот, если после первого щелчка метка не встает на место, то после второго она это легко делает.
Мои предположения — что такое может происходить из — за масштаба, он у меня автоматически изменяется.
Я пока что не могу разобрался в данном вопросе, думаю, может, кто-то по- опытней подскажет, как быть, предложит свой вариант. Спасибо!

Doga
Отправлено: 15.09.2005, 17:31


Мастер участка

Группа: Участник
Сообщений: 575



Попробуйте получать координаты необходимой Вам точки в событии OnAfterDraw. Да и позиционировать Label лучше в этот же момент, когда весь чарт уже плностью отрисован и до следующей его прорисовки уже ничего менятся не будет.

Вернуться в Вопросы программирования в C++Builder