最近在做一个课程设计,主要部分是使用delphi进行的。希望能够实现先载入一张中国地图作为背景,然后载入一架小飞机的图标,通过delphi实现让飞机从江苏飞到北京。(如果能够自己设定路线更好)我是delphi新手,目前实现了载入地图,可是载入飞机图标时,飞机图标出现在另外一个界面,求指点:如何让两个图片出现在一个界面,并且让飞机图标出现在地图之上,如何让飞机在地图上即另外一张图片上移动。谢谢~

解决方案 »

  1.   

    效果最好的方法,用flash做个飞机飞行的flash动画,很漂亮
    delphi加载这个动画即可
    :)
      

  2.   

    简单说,飞机可以用一个image加载,然后你要知道两个地方的坐标,然后移动image从一个点到另一个点
      

  3.   

    窗体上放两个image,一个image加载地图,一个image加载小飞机,放个timer,在timer里不断改变小飞机那个image的left和top值,小飞机就飞起来了~
      

  4.   

    这样是可行的 关键问题是我必须得用delphi做出来 课程的要求 呵呵 如果能设置多个路线最好 并且能自己选路线 可是我两张图都不知道怎么放到一起 纠结
      

  5.   

    恩 我放了两个image 可是加载完了 在两个窗口了 我是使用的点击按钮加载的 是不是这样不可以呢 我的代码:
    unit load;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Image1: TImage;
        Button2: TButton;
        Image2: TImage;
        Label1: TLabel;
        Label2: TLabel;
        Timer1: TTimer;
        Label3: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
    Image1.Picture.LoadFromFile(('e:\delphi lab\Chinamap1.bmp'));
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    Image1.Picture.LoadFromFile(('e:\delphi lab\J20.bmp'));
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    Label2.Caption:=DateTimetostr((now()));
    end;end.
      

  6.   

    1.Image1.Picture.LoadFromFile(('e:\delphi lab\Chinamap1.bmp'));
    Image1.Picture.LoadFromFile(('e:\delphi lab\J20.bmp'));
    至少是
    Image1.Picture.LoadFromFile(('e:\delphi lab\Chinamap1.bmp'));
    Image2.Picture.LoadFromFile(('e:\delphi lab\J20.bmp'));
    2.在Timer1Timer中改变Image2的坐标
      

  7.   

    这个能动的,    Image1:地图
        Image2:飞机(最好是透明的)放在左上角,向右下角运动。
        Timer1:时间控件,Interval:=50;其它的自己做吧!
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        Timer1: TTimer;
        procedure Timer1Timer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    //判断是否到达某点
    if self.Image2.Top<=0 then self.Timer1.Enabled :=false;
    if self.Image2.left<=0 then self.Timer1.Enabled :=false;
    if self.Image2.Left+self.Image2.Width>=self.Width then self.Timer1.Enabled :=false;
    if self.Image2.Top +self.Image2.Height>=self.Height then self.Timer1.Enabled :=false;
    //向右下角运动
    self.Image2.Top :=self.Image2.Top +1;
    self.Image2.Left :=self.Image2.Left +1;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    self.DoubleBuffered:=True;//防止屏幕闪烁
    end;end.
      

  8.   

    抛砖引玉吧!!unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        Timer1: TTimer;
        Button1: TButton;
        Button2: TButton;
        procedure Timer1Timer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      X1,Y1:integer;implementation{$R *.dfm}
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    if self.Image2.Left+1>=X1 then self.Image2.Left:=x1 else self.Image2.Left :=self.Image2.Left +1;
    if self.Image2.Top+1>=Y1 then self.Image2.Top:=Y1 else self.Image2.Top :=self.Image2.Top +1;
    if (self.Image2.Left=X1) and (self.Image2.Left=X1) then self.Timer1.Enabled :=false;//如果移动到位则停止
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    self.DoubleBuffered:=True;
    X1:=self.Width;
    Y1:=self.Height;
    end;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if button=mbRight then begin //如果是右键则停止定义
         self.Button1.Enabled :=true;
         self.Button2.Enabled :=true;
       end;
      if (button=mbLeft)and (not self.Button1.Enabled ) then begin//如果是左键并且是定义状态则记录当前位置
         X1:=x;
         Y1:=Y;
         messagebox(self.Handle,'轨迹定义完成!','系统提示',$00000040);
         self.Button1.Enabled :=true;
         self.Button2.Enabled :=true;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    self.Button1.Enabled :=false;
    self.Button2.Enabled :=false;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    self.Timer1.Enabled :=true;
    end;end.
      

  9.   

    建议用FLASH,再在DELPHI中加载这个.SWF即可
      

  10.   

    放置三个image,image1显示,image2(地图)和image3(飞机)不显示,Timer1Timer时把两个图片合成并画到image1上,image2可以用透明图片,也可以根据路线的方向调整角度。