Форум: "Основная";
Текущий архив: 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.036 c