在form窗体上入一个image控件加载一个图片做底图,然后放一个BUTTON控件,用一个TIMER控件来改变button控件的位置时,出现以下问题:
当image的属性stretch:=true时移动的速度很慢,但把stretch:=false时移动速度很快,这是一个DELPHI不足地方吗?有高手能解决这样的一个问题吗?

解决方案 »

  1.   

    这不是bug.
    当Image.Stretch=true时,这种拉伸的计算是很费时间的.
    因此.如果图片大小不会有变化,最好不要用Strentch
      

  2.   

    不算是BUG?那还不算DELPHI的不足吗?你试一下在C#上不会有这个问题啊,看来DELPHI越来越不行了唉~~不讨论这个,有没有能解决的办法呢?
      

  3.   

    用上DELPHI写上几程序以后觉得delphi真的与微软出的语言性能上差很远的,对数据库的操作慢,很多不完善的东西还是存在。
      

  4.   

    Form.DoubleBuffered := true;
      

  5.   

    你自己不行别赖delphi。你这样的人用什么语言写的都是垃圾
      

  6.   

    我深信DELPHI比不上VC快,但它一定比你说的C#快,因为C#是解释语言,一定比编译的慢,我深信不移
      

  7.   

    如果楼主是高手,可以自己继承TIMAGE,重新写一些优化的代码,如果楼主成功了,那么DELPHI并不逊色
      

  8.   

    Form.DoubleBuffered := true;
    加上后一样有同样问题出现,我把代码贴出让大家看一下
    unit xiaocode;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, jpeg, SUIImagePanel;type
      TForm1 = class(TForm)
        Timer1: TTimer;
        Button7: TButton;
        Button6: TButton;
        Button5: TButton;
        Button4: TButton;
        Button3: TButton;
        Button2: TButton;
        Button1: TButton;
        Image1: TImage;
        procedure Button2Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button2Click(Sender: TObject);
    begin
    button1.Left :=-10;
    button3.Left :=-10;
    button4.Left :=-10;
    button5.Left :=-10;
    button6.Left :=-10;
    button7.Left :=-10;
    timer1.Enabled :=true;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    Form1.DoubleBuffered := true;
    if button1.Left<=250 then
    button1.Left :=button1.Left+20
    else
     if button3.Left<=250 then
     button3.Left:=button3.Left+20
     else
     if button4.Left<=250 then
     button4.Left:=button4.Left+20
     else
     if button5.Left<=250 then
     button5.Left:=button5.Left+20
     else
     if button6.Left<=250 then
     button6.Left:=button6.Left+20
     else
     if button7.Left<=250 then
     button7.Left:=button7.Left+20
     else
     timer1.Enabled :=false;end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    Form1.DoubleBuffered := true;
    end;end.
      

  9.   

    这应该不是image控件的问题,当有控件在image上移动时,image控件要全部重绘,如果当image较大时,重绘可能比较费时。
    你试试如下代码:(未测试)
    image1.enabled:=false;
    //移动button;
    iamge1.enabled:=true;
      

  10.   

    我试了这个方法都不行,我都觉得慢的问题是因为要重绘,以DELPHI真的解决不了吗?
      

  11.   

    to:soundbug(兼职乞丐) 截获消息不会怎样做,能指点一下吗?