Показать сообщение отдельно
  #1  
Старый 19.10.2011, 17:23
elluminate elluminate вне форума
Прохожий
 
Регистрация: 09.11.2010
Сообщения: 7
Репутация: 10
По умолчанию Построение графика в компоненте TImage. Delphi

Строю график по пикселям, читая точки из файла. Изменяю координаты для того, чтобы фокус всегда был на графике. При построении верхняя часть кусочной функции прижимается к вершине экрана и изменение границ влияет на другие части, а на эту нет.

Код:
\\функция, график которой строится

function f(x:Real):Real;
begin
if x<(-5.6) then
 result:=x;                               
if (x>=5.6) and (x<0) then
 result:=-5.6;
if (x>=0) then
 result:=7.9;
end;


\\ запись координат в файл. xb - начало отрезка, xe - конец, xgs - шаг

procedure WriteInFile;
begin
p1;
AssignFile(fi,'c:\graf.dat');
Rewrite(fi);
xg1:=xb;
xgs:=abs(xb-xe)*0.001;
while xg1<=xe  do  
 begin
 yg1:=f(xg1);
 Writeln(fi,xg1,' ',yg1);
 xg1:=xg1+xgs;
 end;
CloseFile(fi);
end;

\\построение графика
xg1, yg1 это координаты из процедуры записи
min и max - минимальное и максимальное значение функции

procedure Graf;
begin
p1;
Reset(fi);
 while not Eof(fi) do
   begin
   ReadLn(fi,xg1,yg1);
   cx:=(xg1-xb)/(xe-xb)*Form1.Image1.width;
   cy:=Form1.Image1.Height-50-((yg1-min)/(max-min)*(Form1.Image1.Height-50)) ;
   Form1.Image1.Canvas.Pixels[round(cx),round(cy)]:=1;
   end;
CloseFile(fi);
end;
Ответить с цитированием