Главная страница
    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.041 c
14-1091044528
Piter
2004-07-28 23:55
2004.08.15
Извините, но по моему в тему :)


14-1090935165
DSKalugin
2004-07-27 17:32
2004.08.15
Частные заказы (соцопрос)


8-1085583870
Dr.Alex
2004-05-26 19:04
2004.08.15
MPEG TO AVI


14-1091193438
dtm
2004-07-30 17:17
2004.08.15
А книжечку по SQL Server 2К присоветуйте, а?


3-1089966024
Reindeer Moss Eater
2004-07-16 12:20
2004.08.15
Доступ к TCP/IP из PL/SQL





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