想让图片在TImage内移动,而且平滑,无刷屏感觉

解决方案 »

  1.   

    ?和在窗体上移动有什么区别?
    研究TImage呢?
      

  2.   

    在Panel里采用双缓冲画Image试试。
      

  3.   

    就是啊,在窗体上移动Timage不就行了,干嘛非让图片在Timage内移动呢?
      

  4.   

    只用Gdi+和DirectX可以实现,其他的效果都不好。
      

  5.   

    LZ 是需要实现图片漫游的功能吧?
    unit MainFrm; interface uses 
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
      Dialogs, ExtCtrls; type 
      TForm1 = class(TForm) 
        Image1: TImage; 
        procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; 
          Shift: TShiftState; X, Y: Integer); 
        procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, 
          Y: Integer); 
        procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; 
          Shift: TShiftState; X, Y: Integer); 
      private 
        FBitmap: TBitmap; 
        FDownFlag: Boolean; 
        FLastPoint: TPoint; 
        FDrawPos: TPoint; 
      public 
        constructor Create(AOwner: TComponent); override; 
        destructor Destroy; override; 
      end; var 
      Form1: TForm1; implementation {$R *.dfm} { TForm1 } constructor TForm1.Create(AOwner: TComponent); 
    begin 
      inherited; 
      FBitmap := TBitmap.Create; 
      FBitmap.LoadFromFile('About.bmp'); 
      Image1.Picture.Graphic := FBitmap; 
      DoubleBuffered := True; 
    end; destructor TForm1.Destroy; 
    begin 
      FBitmap.Free; 
      inherited; 
    end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
    begin 
      FDownFlag := True; 
      FLastPoint := Point(X, Y); 
    end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, 
      Y: Integer); 
    var 
      dx, dy: Integer; 
    begin 
      if FDownFlag then 
      begin 
        dx := X - FLastPoint.X; 
        dy := Y - FLastPoint.Y; 
        Inc(FDrawPos.X, dx); 
        Inc(FDrawPos.Y, dy); 
        Image1.Picture.Graphic := nil; 
        Image1.Canvas.Draw(FDrawPos.X, FDrawPos.Y, FBitmap); 
        FLastPoint := Point(X, Y); 
      end; 
    end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
    begin 
      FDownFlag := False; 
    end; end. 
      

  6.   

    在Scrollbox裡面放兩個Image 一個作為背景,另一個可以移動。不知道這符不符合樓主的意思。