Hola a todos, soy nueva en esto de Delphi
, ya leí la guía de estilo y me parece muy interesante.
Estoy tratando de realizar una gráfica de puntos con ejes cartesianos, existe una tabla stringGrid que se llena con los datos tomados en un laboratorio y esos datos deben ser graficados luego de completar la tabla. El problema que tengo es que cuando pulso el boton de graficar lee los datos y los grafica pero no logro ubicar los ejes "x" y "y" para que se vean. Ya llevo dos días buscando y no lo encuentro, lo que he tratado de hacer es lo siguiente:
Código Delphi
[-]
procedure TrazarEjesYpuntos;
var
i:integer;
x1,y1:real;
const
r=2;
begin
begin
WITH form1.image1.Canvas DO
begin
Pen.Color:=0;
MoveTo(H(minX),V(0));
LineTo(H(maxX),V(0));
MoveTo(H(0),V(minY));
LineTo(H(0),V(maxX));
for i:=1 to N do
begin
x1:=tabla[1,i];
y1:=tabla[2,i];
form1.image1.Canvas.Ellipse(H(x1)-r,V(y1)-r,H(x1)+r,V(y1)+r);
end;
end;
end;
function H(x:real):integer;
begin
H:=round(H0+x*EscX);
end;
function V(y:real):integer;
begin
V:=round(V0-y*EscY);
end;
procedure DetectarExtremos;
var i:integer;
begin
minX:=tabla[1,1];
miny:=tabla[2,1];
maxX:=tabla[1,1];
maxY:=tabla[2,1];
for i:=2 to N do
begin
if tabla[1,i]>maxX then maxX:=tabla[1,i];
if tabla[1,i]then minX:=tabla[1,i];
if tabla[2,i]>maxY then maxY:=tabla[2,i];
if tabla[2,i]then minY:=tabla[2,i];
end;
end;
procedure calcEscalas;
var
aux:real;
begin
aux:=maxX-minX;
maxX:=maxX+aux/10.0;
minX:=minX-aux/10.0;
EscX:=ancho/(maxX-minX);
H0:=-minX*EscX;
aux:=maxY-minY;
maxY:=maxY+aux/10.0;
minY:=minY-aux/10.0;
EscY:=alto/(maxX-minY);
V0:=alto+minY*EscY;
end;
con
Código Delphi
[-]
ancho:=form1.image1.width;
alto:=form1.image1.height;
El ancho y alto por lo que veo es el tamaño que esta puesto en las propiedades de la imagen que son 353 y 472, por lo tanto si trato de dibujar los puntos (1,3),(2,2)y(3,1) no veo ejes, pero si dibujo los puntos (500,0); (300,200) y (0,200) si veo los ejes.
gracias por su ayuda