Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2013, 16:34   #1
impeee
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 56
По умолчанию Масштабирование в TChart

Всем привет.

Подскажите, каким образом можно увеличивать/растягивать по X и Y "внутренности" Chart'a, не меняя глобально его width и height? Скажем, связать параметры TrackBara какого-нибудь с зумом по X-оси ВНУТРИ Charta. Это возможно? Ведь кликами мышки график можно растягивать всячески, значит это должно быть возможно )

Если Chart поместить в ScrollBox и увеличивать его размеры внутри скролбокса, делать грамотное масштабирование - да, как вариант, но если график нужно сделать со сложностями всякими, то такой способ просто не подходит. Спасибо заранее за любую подсказку.
impeee вне форума Ответить с цитированием
Старый 27.09.2013, 10:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попробуй поставь
Chart1.BottomAxis.Automatic:=false
и Chart1.BottomAxis.SetMinMax(Начальн ый предел,Конечный) далее использовать
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.09.2013, 11:19   #3
impeee
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Попробуй поставь
Chart1.BottomAxis.Automatic:=false
и Chart1.BottomAxis.SetMinMax(Начальн ый предел,Конечный) далее использовать
спасибо за отзыв! да, при изменении минимальных и максимальных значений можно добиться своеобразного увеличения графика, но его нельзя будет прокручивать взад вперед по шкале X. да, можно изощриться, и написать код, который бы менял минимум и максимум с каждым движением влево вправо, но будут сбиваться некоторые линии - там биржевой сложный график. вот в этом вся загвоздка.

я нашел такую вот функцию

Код:
Chart1.ZoomPercent(const PercentZoom: Double);
ей можно увеличивать график, растягивать. даже можно более плавную анимацию сделать Chart1.AnimatedZoom:= true, но вся беда в том, что он увеличивает обе оси сразу, а хотелось бы добиться увеличения конкретно оси X, то бишь BottomAxis'a. увеличиваются обе оси даже при Chart1.AllowPanning:= pmHorizontal. Вот такая вот беда ) А так вообще увеличенный график хорошо очень можно мотать туда сюда вот так:

Код:
Chart1.BottomAxis.Scroll(ScrlBr1.Position, true);
Вся проблема в зуме, увеличении обеих осей. Я запускал демонстрацию Charta из "demos/TeeChart/" - там такая же история, графики увеличиваются как и у меня, как будто так и должно быть. неужели нельзя сделать зум только на одну ось (
impeee вне форума Ответить с цитированием
Старый 27.09.2013, 11:47   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но его нельзя будет прокручивать взад вперед по шкале X.
А почему нельзя? Chart1.BottomAxis.Minimum привязать к трэкбару, и треком его менять. Прокрутка должна получится.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.09.2013, 12:09   #5
impeee
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А почему нельзя? Chart1.BottomAxis.Minimum привязать к трэкбару, и треком его менять. Прокрутка должна получится.
ну вот смотри, по иксу с 1 по 5 точку проведена касательная линия, коих довольно много на графике, и если мы ставим минимум на X=4, то эта линия не прорисуется уже, она просто исчезнет, хотя по логике, мы должны видить ее конец чтоли, с 4 по 5 икс.

а так хочу поблагодарить ) теперь у меня все заработало. ведь по Y мне нужны одни и теже значения, например от -100 до 100. при зуме тупо стиавить их каждый раз и все:

Код:
  Chart1.ZoomPercent(100 - TrckBr1.Position);
  Chart1.LeftAxis.Minimum:= -100;
  Chart1.LeftAxis.Maximum:= 100;
  Chart1.BottomAxis.PositionPercent:= 50;
так все работает! ) правда скачет немного, но не беда!) кажется проблема решена. спасибо!
impeee вне форума Ответить с цитированием
Старый 27.09.2013, 12:18   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
она просто исчезнет, хотя по логике, мы должны видить ее конец чтоли, с 4 по 5 икс.
Ну в теории ты прав, но проверять не буду, нет Делфи. Да и задач таких перед собой никогда не ставил. Вообще есть среди сторонних компонентов довольно крутые графики, можешь попробовать их.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Масштабирование drylozav Помощь студентам 0 02.01.2012 20:32
Компонент TChart масштабирование tans C++ Builder 1 21.07.2011 16:12
Масштабирование Vova777 Общие вопросы Delphi 9 26.02.2011 19:46
Масштабирование Град Microsoft Office Excel 6 24.10.2008 09:23
масштабирование Alex_Pro Общие вопросы .NET 0 21.05.2008 18:21