请教:
是这样的,我有一个 image1 , 一个 timer1 
现在我需要在 image1 的底部把把一些字符串显示出来?假设 varss:string;begin
      ss:='3333333333333333333333333333333333
           uyiokjkll;l;l;';';'';';';';';';';';
           fjioioopoppop[p[p[[p[p[p[p[p[p[p[p';      //现在需要把这些字符一个一个的显示出来,
        字符串是从右往左显示,前面一个字符串
        前进一个位置,后面一个字符显示在前面
        一个字符的位置上,当然 ,向左前进的
        时候,如果超过 image1 的 0 ,则那个就
        不显示了。      这样的程序要怎么实现啊?
      各位大哥帮帮我啊
谢谢!

解决方案 »

  1.   

    需要加一个label,在image上是没法弄的
      

  2.   

    Image1.Canvas.Font:=fonts;  // font 属性
    i:=fonts.Size;
    Image1.Canvas.TextOut(0,0,'ss');image 应该可以啊
    不过我不知道移动,因为有 fonts 属性
    谢谢!
      

  3.   

    如果Image不加载图片,即背景是一个单一色,可以:
    const
      ss : string ='3333333333333333333333333333333333uyiokjkll;l;l;';var
      X, Y : integer;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Image1.Canvas.Pen.Style := psClear;
      Image1.Canvas.TextOut(X, Y, SS);
      Dec(X);
      SetTextColor(Image1.Canvas.Handle, clBlue);
      Image1.Canvas.TextOut(X, Y, SS);
      if X = 0 then TTimer(Sender).Enabled := False;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      X := Image1.Width;
      Y := Image1.Height - 40;
      Timer1.Interval := 50;
      Timer1.Enabled := true;
    end;你再根据我写的代码改一下吧。但不知楼主是不是要这种效果。
      

  4.   

    给个思路吧,先设置Timer的Interval运行值,然后在procedure TForm1.Timer1Timer(Sender: TObject);里编写代码,使得显示位置加5(具体加多少视你要求的速度而定),当显示的位置小于Image的Left值时,重新定位到起始位置。
    其原理很简单:就是利用Timer每隔一段时间自动执行代码的特点,自己想想应该OK了的。
      

  5.   

    再给个代码你吧:var
     x:integer=0;
     y:integer=0;
    procedure TForm1.Timer2Timer(Sender: TObject);
    var
    s:string;
    begin
      s:='这是要显示的文字!!!';
    Image1.Canvas.TextOut(x,y,s);
    x:=x+5;
    if x>Image1.Width then x:=0;
    end;///////////以上代码可直接运行,不过建议你加个Label,因为这样直接显示的话,延迟的现象严重,看起来不好!
      

  6.   

    楼上:你漏掉了关于“洗掉”前一次Timer到来时TextOut的字符串的相关代码。你可以参考我的代码添加一下----从此处往上翻三层即是我的代码。