|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.05.2007, 15:22 | #1 |
Пользователь
Регистрация: 17.05.2007
Сообщений: 15
|
компонент TChart
Всем добрый день!
У меня есть Chart1 :TChart с свойствами: AllowPanning:=pmBoth; (прокрутка разрешена в обоих направлениях) AllowZoom:=True; (позволяет изменять во время выполнения масштаб изображения, вырезая фрагменты диаграммы или графика курсором мыши) При создании компонента в мастере на закладке Chart => Axis => Scales, выбрано Automatic (устанавливает автоматическое масштабирование данных по оси). В процессе заполнения графика (у меня этот процесс долгий) автоматическое масштабирование работает. После прокрутки или вырезания фрагмента, масштабирование прекращается (это понятная необходимость). Как мне вернуть отображение в исходное состояние (с автоматическим масштабированием)? |
18.05.2007, 08:07 | #2 |
Участник клуба
Регистрация: 28.03.2007
Сообщений: 1,814
|
Если речь идёт о выделении участка графика (во время работы) с помощью мыши то возвратить график в исходное состояние можно с помощью мыши, только нужно выделить любой участок графика в направлении справо налево.
|
18.05.2007, 14:30 | #3 |
Пользователь
Регистрация: 17.05.2007
Сообщений: 15
|
Спасибо большое! Хотя я уже сам разобрался... надо было свойствам каждой из осей задать следующее:
Код:
Теперь бьюсь, чтобы при перемещении курсора по графику выдавалось информация о значениях по обеим осям точки под курсором... Вроди-бы обрабатывай MouseMove и все... Да только у меня размеры Chart-а изменяет пользователь и при этом сами оси плавают по графику... Подскажите, плиз, как узнать положение осей на канве? Зная максимумы и минимумы осей привязку сделаю! За ранее благодарен! |
18.05.2007, 17:00 | #4 |
Участник клуба
Регистрация: 28.03.2007
Сообщений: 1,814
|
...Пересчёт координат осей в экранные координаты осуществляет метод:
Function CalcPosValue (Const Value:Double):Longint; он возвращает экранную координату (X или Y в зависимости от того применяется он к горизонтальной или вертикальной оси), соответствующую занчению Value данной оси. Экранные координаты соотв. координатам компонента Chart Координаты лев. края =(0,0). Метод применим к любой оси. Аналогичные методы CalcXPosValue и CalcYPosValue, соответственно для гор. и верт осей. function CalcPosPoint (Value:integer):Double; возвращает знач. координаты данной оси, сооотв-ей экранной координате Value в пикселах. если применяется к гориз оси то Value -экранная координата X, если к верт. оси то Value-Y. function CalcSizeValue (valueouble):longint; возвращает число пикселов, соотв. отрезку оси длиной Value. позволяет пеерводить интервалы значений координат оси в интервалы экранных координат. применимо к любой оси. PS: может и поможет |
16.12.2007, 20:19 | #5 |
Пользователь
Регистрация: 15.12.2007
Сообщений: 44
|
Здраствуйте
Тут такой вопрос по поводу TChart: у меня есть двумерный массив: а[i,1] - это название предмета, а[i,2] - кол-во этого предмета. Нужно нарисовать такой график : вдоль Х идут названия предметов, вдоль Y - кол-во предметов. От названий вверх поднимаются столбики, высота которых зависит соответственно от кол-ва. Немного путанно. Ну вы поняли. Помогите пожалуйста |
18.12.2007, 16:10 | #6 |
Участник клуба
Регистрация: 28.03.2007
Сообщений: 1,814
|
только на будущее не вдоль оси а по оси......
|
18.02.2008, 20:54 | #7 |
Новичок
Джуниор
Регистрация: 17.02.2008
Сообщений: 2
|
вопрос
Привет всем! У меня 2 вопроса.
1) В таймере у меня есть процедура, котрая добавляет в одну из серий TChart (Line) новую точку - текущую координату движущейся на экране точки. Мне нужно, чтобы при рисовании графика новая точка графика соединялась прямой линией с предыдущей точкой. Однако при добавлении новой точки в график он, видимо, строится заново, причем точки соединяются ломаной линией в той последовательности, как они расположены по оси абсцисс, а не в соответствии с последовательностью их добавления. Можно ли как-то это исправить? Может, у этого компонента есть соответствующие параметры? 2) График в выше описанном случае рисуется при определённых параметрах. Нужно, чтобы при изменении параметров рисовался новый график в тех же координатах, а старый график оставался на рисунке. Т.е. нужно, чтобы при заранее неизвестном количестве серий добавлялись новые серии при запуске нового сценария. Как это сделать? (я работаю в Delphi 7) Последний раз редактировалось treugolnich; 18.02.2008 в 23:18. |
19.02.2008, 21:07 | #8 | |
Пользователь
Регистрация: 20.01.2008
Сообщений: 24
|
Цитата:
Во-первых, график строится при необходимости перерисовки панели (причем только та часть, которая видима), ЕСТЕСТВЕННО, что при добавлении новой точки необходимость перерисовки возникает. Во-вторых, если вы действительно используете тип серии TSeriesLine, то следующая точка неизбежно прорисуется вместе с линией, исходящей из предыдущей (глупо, если бы было не так, правда?! надеюсь вы не отключали прорисовку линий при последующем ожидании их прорисовки). В-третих, точки располагаются так, как вы их добавляете в серию: - указываете только Y для новой точки, получаете серию точек, в которой они следуют по оси абсцисс в очередности добавления; - указываете X и Y, получаете серию точек, соединенных в очередности добавления, но по оси абсцисс расположенных в соответствии с указанными координатами X И чего не понятного, ну у вас и вопросы...уж куда проще-то, даже по элементарной логике и то все интуитивно понятно... |
|
19.02.2008, 23:47 | #9 | |
Новичок
Джуниор
Регистрация: 17.02.2008
Сообщений: 2
|
Цитата:
Что касается метода добавления точек, то я указывала X и Y, но при перерисовке они соединяются в очерёдности их расположения по оси абсцисс, а не в очерёдности их добавления... Я вобще-то биолог, просто понадобилось программку написать для моделирования. Поэтому я не очень вникала, как все это работает, в т.ч. в коды готовых компонентов Delphi - вот и недогадалась сразу, что при добавлении новой точки происходит перерисовка (эта процедура логична, но я же в "кишки" этого компонента не залазила и не знаю, задана там перерисовка, или нет). Последний раз редактировалось treugolnich; 19.02.2008 в 23:49. |
|
11.03.2011, 20:41 | #10 |
Новичок
Джуниор
Регистрация: 11.04.2010
Сообщений: 1
|
Всем привет. Есть проблема: Генерирую случайные числа, по ним строю график функции распределения. Если этот процесс повторить многократно, то TCHART каждый раз автоматически меняет цену деления шкалы, а график строит правильно, как сделать, чтобы цена деления шкалы не изменялась.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Построить график функции, используя компонент TChart. | vitalik007 | Компоненты Delphi | 3 | 09.06.2014 11:20 |
TChart | nataly60 | Помощь студентам | 1 | 06.06.2008 19:13 |
Tchart | Droid | Общие вопросы Delphi | 9 | 27.05.2008 20:38 |
Использование TChart | Tvv7-7-7 | Помощь студентам | 7 | 24.06.2007 21:08 |
TChart и printer | Albenous | Общие вопросы Delphi | 5 | 20.02.2007 09:42 |