Predisposizioni per tracciamento grafico in coord relativeSi suppone di usare un componente image1 nel form1.
//-----------------------------------------------------------------------
type
Trc=record
minx,maxx,miny,maxy:real;
px,py:integer;
end;//-----------------------------------------------------------------------
var
Rc:Trc;//-----------------------------------------------------------------------
function ymap(y:real):integer;
begin
result:=round(Rc.py*(y-Rc.maxy)/(Rc.miny-Rc.maxy));
end;
function xmap(x:real):integer;
begin
result:=round(Rc.px*(x-Rc.minx)/(Rc.maxx-Rc.minx));
end;//-----------------------------------------------------------------------
procedure setcoord(px,py:integer; minx,maxy,maxx,miny:real);
begin
Rc.px:=px;
Rc.py:=py;
Rc.minx:=minx;
Rc.maxx:=maxx;
Rc.miny:=miny;
Rc.maxy:=maxy;
end;//-----------------------------------------------------------------------
procedure assey(x:real);
begin
form1.image1.canvas.moveto(xmap(x),ymap(Rc.miny));
form1.image1.canvas.lineto(xmap(x),ymap(Rc.maxy));
end;
procedure assex(y:real);
begin
form1.image1.canvas.moveto(xmap(Rc.minx),ymap(y));
form1.image1.canvas.lineto(xmap(Rc.maxx),ymap(y));
end;//---------------------------------------------------------------------
// DISEGNA funzione
//-----------------------------------------------------------------------procedure disegnafunzione;
var minx,maxx,x,y,segm:real;
h,punti:integer;
begin
with form1 do begin// definisce coordinate relative in area grafica
setcoord(image1.width,image1.height, minimo valore x , massimo valore y ,
massimo valore x , minimo valore y);//disegna assi passanti per lo zero
image1.canvas.pen.color:=clblue;
image1.canvas.pen.style:=psdot;
assey(0);
assex(0);//imposta penna per tracciamento funzione
image1.canvas.pen.color:=clred;
image1.canvas.pen.style:=pssolid;//imposta estremi x e numero di punti
minx:=minima x funzione;
maxx:=massima x funzione;
punti:=numero punti funzione;//tracciamento primo punto
segm:=(maxx-minx)/(punti-1);
x:=minx;
y:= funzione ;
image1.canvas.moveto(xmap(x),ymap(y));//tracciamento altri punti funzione
for h:=2 to punti do
begin
x:=(minx+segm*(h-1));
y:= funzione ;
image1.canvas.lineto(xmap(x),ymap(y));
end;end;