如题,谢谢!

解决方案 »

  1.   

    用一个画布和一个Ttimer,在Ttimer中设计绘制的过程,注意窗口坐标和实际的坐标不同就行了。具体的步骤看看有图形图像内容的Delphi的书,都有例子的。具体那本我记不得了,好多书上都有。
      

  2.   

    //画 y= h* sin(t)的正弦曲线unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Timer1: TTimer;
        procedure Button1Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
      public
        y, t, h : real ;
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      With Form1.Canvas do begin
        //画坐标横轴
        PenPos := Point(10,240);
        LineTo(600,240);
        PenPos := Point(594,238);
        LineTo(600,240);
        PenPos := Point(594,242);
        LineTo(600,240);
        //画坐标纵轴
        PenPos := Point(10,400);
        LineTo(10,80);
        PenPos := Point(8,86);
        LineTo(10,80);
        PenPos := Point(12,86);
        LineTo(10,80);
        //将Pen移至坐标原点
        PenPos := Point(10,240);
      end;  //初始化
      h := 80;
      t := 0;  //开始画
      Timer1.Enabled := True ;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
       t := t + 1;
       y := h * sin(t/180*3.14159);
       Form1.Canvas.LineTo(Round(10+t),Round(240+y));
       if round(t) = 598 then Timer1.Enabled := False;
    end;end.
      

  3.   

    注意:
       1、y,h,t 在Public中或private中定义
       2、坐标原点为(10,240)
      

  4.   

    to: Haofei(昊飞)谢谢你,谢谢大家.估计我表达的还不是很清楚,我的意思是在这条正弦线象波浪一样随着时间上下运动。例如:当X=1这一点,随着时间一会到达最高点,一会又到最低点。谢谢各位!!
      

  5.   

    //画 y= h* sin(t)的正弦曲线unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Timer1: TTimer;
        procedure Button1Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
      public
        y, t, h : real ;
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
       i : integer ;
    begin
      With Form1.Canvas do begin
        //画坐标横轴
        PenPos := Point(10,240);
        LineTo(600,240);
        PenPos := Point(594,238);
        LineTo(600,240);
        PenPos := Point(594,242);
        LineTo(600,240);
        //画坐标纵轴
        PenPos := Point(10,400);
        LineTo(10,80);
        PenPos := Point(8,86);
        LineTo(10,80);
        PenPos := Point(12,86);
        LineTo(10,80);
        //将Pen移至坐标原点
        PenPos := Point(10,240);
      end;  //初始化
      h := 80;
      t := 0;
      Form1.Canvas.Pen.Mode := pmXOR ;
      Form1.Canvas.Pen.Color := clRed ;  //开始画
       for i := 1 to 598 do begin
         y := h * sin((t+i)/180*3.14159);
         Form1.Canvas.LineTo(Round(10+i),Round(240+y));
       end;
      Timer1.Enabled := True ;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    var i: integer ;
    begin
       //擦除原线
       y := h * sin((t+i)/180*3.14159);
       Form1.Canvas.PenPos := Point(10,Round(240+y));
       for i := 1 to 598 do begin
         y := h * sin((t+i)/180*3.14159);
         Form1.Canvas.LineTo(Round(10+i),Round(240+y));
       end;   //画相移后的线
       t := t + 1;
       y := h * sin((t+i)/180*3.14159);
       Form1.Canvas.PenPos := Point(10,Round(240+y));
       for i := 1 to 598 do begin
         y := h * sin((t+i)/180*3.14159);
         Form1.Canvas.LineTo(Round(10+i),Round(240+y));
       end;
    end;end.
      

  6.   

    To: Haofei(昊飞),谢谢你。最后一个正是我所希望的,我又进行了一些改进。你可以试着运行一下这个程序,不是很理想。