Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Вниз

Как масштабировать график (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
14-1091216496
поклонник
2004-07-30 23:41
2004.08.15
Поможем наши друзьям


14-1091102608
Vovchik_A
2004-07-29 16:03
2004.08.15
Внимание вопрос !


14-1090506216
DDDeN
2004-07-22 18:23
2004.08.15
Рекурсивный поиск в Win 2k


1-1091452271
Veetyok
2004-08-02 17:11
2004.08.15
Сортировка в StringGrid


14-1090841215
AZ
2004-07-26 15:26
2004.08.15
Что такое SOAP и с чем это мыло едят?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский