Предыстория:
Пишу для личных целей некую бухгалтерскую программку, пишу долго с переменным успехом. И вот при просмотре графика сильно нагруженного показаниями у меня появилась мысль, а что если при выводе графика целиком делать размер подписей поменьше, а при выборе какого-то определенного участка - размер увеличивать. То же самое можно проделывать и с количеством символов после запятой.
Покурив инет появилась информация вроде имеется свойство zoom - но к сожалению в Delphi 7 я такого не обнаружил, поэтому я решил отталкиваться от BottomAxis.Maximum\Minimum
Итак-с начнем-с:
Для начала создадим Chart, и добавим серию типа FastLine и заполним любыми данными
Я использовал такой код:
var
i, i_: Integer;
begin
for i:= 1 to 100 do
begin
Chart1.Series[0].Add (i);
i_:=i-1;
Chart1.Series[0].Add (i_);
end;
end;
Затем добавляем на график подписи:
В событие Chart1 zoom поместим вот такой код:
var
Zoom_ : Double;
begin
With Chart1 do
begin
Zoom_:= BottomAxis.Maximum - BottomAxis.Minimum;
if Zoom_ > 100 then Series[0].Marks.Font.Size := 8;
if (Zoom_ < 100) and (Zoom_ > 50) then Series[0].Marks.Font.Size := 16;
if (Zoom_ < 50) and (Zoom_ > 10) then Series[0].Marks.Font.Size := 24;
if (Zoom_ < 10) and (Zoom_ > 0) then Series[0].Marks.Font.Size := 36;
end;
end;
И для возврата к исходному в событие UndoZoom такой:
Chart1.Series[0].Marks.Font.Size:= 8;
Значение я подбирал в ручную - возможно вам потребуются другие значения, но как говорится главное идея.
Скачать исходник + видос - http://dfiles.ru/files/5tvy6pgum
спасибо, заберу
ОтветитьУдалить