Видимость кривой Tchart

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем Serginio, 6 мар 2007.

Статус темы:
Закрыта.
  1. Serginio

    Serginio Гость

    Привет коллеги,
    Работаю с компонентом TChart и загружаю на график кривые на определенный диапазон
    ([chart->BottomAxis->Minimum; chart->BottomAxis->Maximum]), диапазон равен [0; 100] значений.
    И у меня вот такая проблема: когда я рисую на график кривую и ”расстояние” между предыдущей точки и следующей точки велика (примерно 5000-10000 единиц), то часть кривой исчезает. График точно есть, потому что когда я масштабирую (увеличиваю диапазон видимость) график – то вся кривая видна.
    Может это быть от свойств компонента? (я честно не верю)
    Помогите, кто чем (советом) может!!!
    Заранее благодарю!
     
  2. Ogion7

    Ogion7 Гость

    Если я правильно понял, Вам нужно перед прорисовкой графика, оценить сколько единиц(графика) находиться в одном пикселе TChart-а
     
  3. Serginio

    Serginio Гость

    Вообще-то, (для примера) я рисую первую точку в 0 (ноль) а следующую в 5000 (или 10000) по оси времени и т.д. (ось времени - это BottomAxis и ее формат число...)

    Вот кусок кода:
    Код (Text):
    Chart1->Series[curveNr]->AddXY(curMaxPos, value, "", color);
    или
    ((TChart*)FindComponent(chartName))->Series[0]->AddXY(curMaxPos, value, "", color);
    где:
    int curveNr - серия на Чарте
    float value - текущая значение
    TColor color - цвет
    AnsiString chartName - имя Чарта созданным динамически
    int curMaxPos - текущая значение оси времени (BottomAxis, формат число)
    При AddXY(...) все точки соединяются между ними,
    а здесь часть кривой между двумя точками исчезает...

    Для малениких "растоянии" между точками - работает как надо,
    а для большых "растоянии" - глючит...
     
  4. Ogion7

    Ogion7 Гость

    Ты сам писал
    . Как ты можеш увидеть точку 1000 если 100 максимум?
    Естесно ничего не видиш. Я грю надо посчитать сколько точек реально на экране(у тебя 100). Хочеш увидеть 1000-ю. Делим 1000/100=10. В одной т. чарта 10 условных единиц. Рисуй в соответсвии с этим. Вот я что то подобное писал на Делфи

    Код (Text):
    tmp:=DBChart1.ChartRect.Right-DBChart1.ChartRect.Left;
    Query1.Last;
    step:=Query1.FieldByName('Arg').AsFloat;
    Query1.First;
    step:=step-Query1.FieldByName('Arg').AsFloat;
    step:=step/tmp;//found the mass of pixel in rect.DBChart1
    Last и First максимальное и минимальное значение для функции по оси икс(я данные из базы брал потому и квери).
     
  5. Serginio

    Serginio Гость

    Привет Ogion7,

    Спасибо за твое предложение, но дело не в этом - у меня есть Скроллинг и я передвигаюсь по Чарту от 0 (ноль) до максимальной значении с диапазона до 100 единиц на оси Х (времени) и т.д.

    Дело в том что, между двумя точками кривое исчезает (свойство Chart1->Series->Active = true;) ...

    Для малениких "растоянии" между точками - работает как надо, а для большых "растоянии" - глючит...
     
  6. Ogion7

    Ogion7 Гость

    не врубаюсь :) пришли скрин, код. Можн на мыло, откопаю у себя билдер и посмотрю
    kos.mail@mail.ru
     
  7. Serginio

    Serginio Гость

    Sorry, не могу прислать код, потому что этот прожект на заказ...
    Лучше скажи что не понятно.
    Извени, я перепутал (свойство Chart1->Series->Active = false;).
    Свойства всех кривых Active = false; - значит они видимы, не спрятаны.
     
  8. Ogion7

    Ogion7 Гость

    что ты рисуеш по оси х? Значение функции в пикселях? Что занчит "от 0 (ноль) до максимальной значении с диапазона до 100 единиц на оси Х"? Шо есть единица? Зачем тебе скролер в чарте?
     
  9. Serginio

    Serginio Гость

    По оси Х я ставляю числа от Ноль до максимальной значении (действие пройсходит во времени):
    0, 1, 2, 3, 4, 5, ... 1000, ... 10000, ... 100000, ... 1000000, ...
    1 единица соответствует 1 значении.
    Значении могут быть в каждой единицы времени или нет.
    "Маленикая растояние" - интервал между точками 0 - 100 единиц.
    "Большая растояние" - интервал между точками 1000 - 10000 единиц и больше.

    На Чарте одновременно можно увидеть [0; 100] значений/единиц (<=100 единиц) и по этому я использую скролер, чтобы передвигаться по Чарту от 0 (ноль) до максимальной значении с диапазона до 100 (<=100) единиц на оси Х (времени) и т.д.
    Диапазон задается пользователем (0 - 100 единиц на оси Х).

    Думаю что ответил на твой вопросы...
     
  10. Ogion7

    Ogion7 Гость

    Аха, дошло вроде. Типа анимация... :(
     
  11. Ogion7

    Ogion7 Гость

    Наверно в чарте для прорисовки, нужно чтобы точки начала конца линии были в пределах просматриваемой области. Т.е. ситуация -- ты в диапазоне 2000-2100, начальная точка в 1905, конечная в 2005. Просчитай где должна быть точки начала и конца линии в пределах просматриваемого диапазона
     
  12. Serginio

    Serginio Гость

    Спасибо, но дело не в этом.
    Не имеет значение где соединяются точки - кривые должны быть видны на Чарте и так...

    У меня есть такой вариант - чтобы нарисовать этт кривые из множество частейб но это не самое лучшее дело, так как увеличивается время отображения - а мне это не надо...
     
  13. Ogion7

    Ogion7 Гость

    Сорри, мои идеи иссякли :(
     
Загрузка...
Похожие Темы - Видимость кривой Tchart
  1. orion
    Ответов:
    4
    Просмотров:
    586
  2. ЧИА
    Ответов:
    2
    Просмотров:
    1.192
  3. rrr
    Ответов:
    10
    Просмотров:
    2.061
  4. Mitya
    Ответов:
    1
    Просмотров:
    1.288
  5. lira89
    Ответов:
    7
    Просмотров:
    3.221
Статус темы:
Закрыта.

Поделиться этой страницей