Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

Как масштабировать график (TChart) по заданным границам?   Найти похожие ветки 

 
Вопрос   (2004-07-28 19:28) [0]

У меня есть график. И есть некоторые границы (горизонтальные линии - например, минимум и максимум.. или желаемое значение), которые я рисую на канве с помощью обычного lineTo. Пример:

MoveTo(15,Chart1.LeftAxis.CalcYPosValue(max));
LineTo(852,Chart1.LeftAxis.CalcYPosValue(max));

Линии рисуются правильно. Но одна беда - они не являются сериями точек TChart"a и поэтому, если допустим максимальное значение по Y у графика - 2, а верхняя граница равна 4-м, то она попросту "уезжает" вверх. Как в ходе работы программы смаштабировать график (например уменьшить), чтобы сверху было максимальное значение 4, при максимальном значении графика 2 (по умолчанию график сам масштабируется под максимальное значение 2). Подскажите пожалуйста наиболее простой способ. Первое, что пришло в голову - нарисовать ещё 2 серии точек (пусть по одной точке) - минимум и максимум, но это "некрасивое" решение, неужели нет другого?


 
olookin ©   (2004-07-28 20:40) [1]

У осей (левой, правой, нижней и конечно верхней) есть свойство Automatic(AutomaticMax/Min). Поставить их в false и делать что вздумается.


 
Вопрос   (2004-07-28 20:55) [2]

Так я хочу, чтобы оси масштабировались, но не по дефолту - подстраивались под график, а автоматически подстраивались под моё значение (чтобы, например, максимум - 4). Как это сделать "ручками" не подскажите?


 
olookin ©   (2004-07-28 20:57) [3]

Automatic:=false
Minimum:=Твое_значение
Maximum:=Твое_второе_значение

Обратим внимание на то, что если при текущей установке Miniimum больше Maximum то лезет ошибка.


 
olookin ©   (2004-07-28 21:00) [4]

Типа пример

procedure TForm1.Button1Click(Sender: TObject);
begin
chart1.leftaxis.automatic:=false;
chart1.leftaxis.Minimum:=-100;
chart1.leftaxis.Maximum:=100;
end;

procedure TForm1.FormShow(Sender: TObject);
var i: integer;
begin
 for i:=0 to 10 do chart1.series[0].addxy(i,random(i*20));
end;


 
Вопрос   (2004-07-30 19:16) [5]

Спасибо, всё отлично масштабируется теперь. И совсем не сложно оказалось.

Только 1 вопрос остался: как рефрешить график? Я поместил код рисования границ на канве в обработчик события Chart1AfterDraw(Sender: TObject). Соответственно как заканчивается прорисовка графика - тогда начинают рисоваться границы. Но, допустим, я хочу нажатием кнопки убрать границы. Для этого надо как-то рефрешить график, но границы в обработчике Chart1AfterDraw не рисовать (флаг). Вопрос: как это (рефреш Chart1) сделать?


 
olookin ©   (2004-07-30 20:32) [6]

Chart1.Refresh?



Страницы: 1 вся ветка

Текущий архив: 2004.08.15;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.025 c
4-1088760245
Rain
2004-07-02 13:24
2004.08.15
Компонент для работы с модемом


14-1091022117
Mell
2004-07-28 17:41
2004.08.15
обмен строками


1-1091438240
Stager
2004-08-02 13:17
2004.08.15
Переход на Delphi7


1-1091395450
sdw_syscoder
2004-08-02 01:24
2004.08.15
Потоки (Thread)


10-1028542687
LeS
2002-08-05 14:18
2004.08.15
Ошибка "Interface not supported"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский