Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Como graficar. (https://www.clubdelphi.com/foros/showthread.php?t=61652)

asdrojas 16-11-2008 13:55:44

Como graficar.
 
Hola soy un novato con delphi, necesito hacer una gráfica para un proyecto en la u y no he podido. Instalé SDL component tools para delphi 7, yo tengo el 7.2 y no me funciona, también instalé el componente rt science y funciona de perla, pero el profesor me dijo que no lo aceptaría porque es un demo, y sólo deja correr el ejecutable a través del IDE.

Ahora necesito saber que otra opción tengo además de rt science y sdl, el gráfico es para monitoriar la velocidad de un motor, or lo tanto el eje x debe estar variando en el tiempo, prácticamente es esto lo único que mefalta para terminar el proyecto.

Gracias.

coso 16-11-2008 19:16:49

Hola, te dejo un ejemplo :

Código Delphi [-]
var
     bt : TBitmap;
     t  : double;

procedure TForm1.FormCreate(Sender: TObject);
begin
     bt := TBitmap.Create;
     doublebuffered := true;
     Timer1.Interval := 1;
     Timer1.Enabled := true;
end;

function Func(x : double) : double;
begin
     result := 100*sin(x*5)+ 100*cos(x*8);
end;

procedure TForm1.FormPaint(Sender: TObject);
var
     i,
     c : integer;
begin
     c := bt.Height div 2;

     bt.Width  := Width;
     bt.Height := Height;

     bt.Canvas.Brush.Color := $770000;
     bt.Canvas.FillRect(Rect(0,0,bt.Width,bt.Height));

     bt.Canvas.Pen.Color   := clWhite;
     bt.Canvas.MoveTo(0,c);
     bt.Canvas.LineTo(bt.Width,c);

     bt.Canvas.Pen.Color := $0080FF;
     bt.Canvas.Pen.Width := 2;
     for i := bt.Width downto 0 do
     begin
          bt.Canvas.MoveTo(i,Round(Func(t+0.0025*i)) + c);
          bt.Canvas.LineTo(i,Round(Func(t+0.0025*(i-1))) + c);
     end;

     BitBlt(Canvas.Handle, 0, 0, ClientWidth, ClientHeight, bt.Canvas.Handle, 0, 0, SRCCOPY);
end;

procedure TForm1.TimerTimer(Sender: TObject);
begin
     t := t + 0.0025;
     Paint;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
     bt.Destroy;
end;

busca por el foro sobre bitblt y bitmap.lock, para optimizar el 'flickering'. Saludos.


La franja horaria es GMT +2. Ahora son las 16:45:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi