Главная страница
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.48 MB
Время: 0.023 c
1-1091086356
ShiFT
2004-07-29 11:32
2004.08.15
Разбор строки по Формату


1-1091201026
DimonNew
2004-07-30 19:23
2004.08.15
Где почитать про службы на русском


9-1083140607
Tsaiper
2004-04-28 12:23
2004.08.15
нужен DDUTIL.PAS


1-1091462688
ceval
2004-08-02 20:04
2004.08.15
как программно задать ширину колонки в Excel


1-1091462234
ceval
2004-08-02 19:57
2004.08.15
как организовать цикл по Edit