Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.08.2012, 15:55
qazwsx qazwsx вне форума
Прохожий
 
Регистрация: 03.08.2012
Сообщения: 10
Репутация: 10
Восклицание Рисуем график

Подскажите пожалуйста как можно построить график не мгновенно, а чтобы график строился "во времени" - т.е. плавное построение графика....
Данная программа строит график мгновенно и несколько раз, подскажите пожалуйста как построить плавно по точкам

Код:
unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  ExtCtrls, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1; 
  x0, y0 : integer;
  h, w   : integer;
  dx, dy : integer;
  x, y   : integer;
   cross : integer;
  dcross : integer;
  lx, ly : real;
  dlx,dly: real;
  i      : integer;
  a,b: integer;

  xg, yg : array[0..12] of integer;
implementation

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
 randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  timer1.Enabled:=false;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
       x0:=30; y0:=420;
       h:=400; w:=520;
       dx:=40; dy:=40;
       dcross:=1;
       dlx:=1.0; dly:=1.0;
       with form1.Canvas do
         begin
           pen.Color:=clBlack;
           cross:=dcross;
           moveto(x0,y0);           lineto(x0,y0-h);
           moveto(x0,y0);           lineto(x0+w,y0);
           //засечка, сетка и оцифровка по оси Х
           x:=x0+dx;
           lx:=dlx;
           repeat
             moveto(x, y0-3);       lineto(x, y0+3);
             cross:=cross-1;
               if cross = 0 then
                 begin
                   textout(x-8,y0+5,floattostr(lx));
                   cross:=dcross;
                 end;
                 pen.style:=psdot;
                 moveto(x, y0-10);       lineto(x, y0-h);
                 pen.style:=pssolid;
                 lx:=lx+dlx;
                 x:=x+dx;
           until(x>x0+w);

           y:=y0-dy;
           ly:=dly;
           repeat
             moveto(x0-3, y);       lineto(x0+3, y);

                   textout(x0-20,y,floattostr(ly));

                 pen.style:=psdot;
                 moveto(x0+3, y);       lineto(x0+w, y);
                 pen.style:=pssolid;
                 y:=y-dy;
                 ly:=ly+dly;
             until(y<y0-h);
         end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

 for i:=0 to 12 do
 begin
 xg[i]:=i;
 yg[i]:=random(10);
 end;
 // построение графика
 with canvas do
 begin
 pen.Style:=psSolid;
 pen.Color:=clRed;
 x:=trunc(x0+xg[0]*dx/dlx);
 y:=trunc(y0-yg[0]*dy/dly);
 moveto(x,y);
 for i:=1 to 12 do
 begin
 x:=trunc(x0+xg[i]*dx/dlx);
 y:=trunc(y0-yg[i]*dy/dly);
 lineto(x,y);
 end;
 end;
 //i:=i+1;
end;

initialization
  {$I unit1.lrs}

end.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:42.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025