求助:我希望 图片从 image1 的左下角,移动到 左上角,这样的程序要怎么写?谢谢! ( 积分: 10 )

  • 主题发起人 主题发起人 lsh998
  • 开始时间 开始时间
L

lsh998

Unregistered / Unconfirmed
GUEST, unregistred user!
请教:
我的 form1 窗体上有个 image1 控件,timer1 控件
我希望当我单击 button1 ,
图片从 image1 的左下角,移动到 左上角

那么/
procedure TForm1.Button1Click(Sender: TObject);

var
filename:string;
map:Tbitmap; //位图实例变量
imagew:integeer; //image1的宽
imageh:integeer; //image1的高
begin
filename:=ExtractFilePath(paramstr(0))+'000.bmp';
map:=Tbitmap.Create;
map.LoadFromFile(filename);

//这里程序要怎么写?
end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin
//这里程序要怎么写?
end;

谢谢!
 
服了。这样理解动画。。。。
按你的设计,你要先准备好一个图片,然后在程序中再创建一个和image1一样大的bitmap。
然后在你的记时器中,用指定的频率从建那个和image1一样大的bitmap.只不过每次见的时候,把你准备好的图片放到那个bitmap的不同位置copy一下
 
为什么移动图片 为什么不直接移动Image1!!!!!!!!!!!!!!!
 
谢谢大哥!
image1 和 创建的 bitmap 是不一样大的
procedure TForm1.Button1Click(Sender: TObject);

var
filename:string;
map:Tbitmap; //位图实例变量
imageh:integer; //image1的高
maph:integer; //图片的高
begin
filename:=ExtractFilePath(paramstr(0))+'000.bmp';
map:=Tbitmap.Create;
map.LoadFromFile(filename);
imageh:=Image1.Height;
maph:=map.Height;
Image1.Canvas.Draw(0,(imageh-maph),map);
end;

怎么使图片移动啊?
谢谢!
 
可以把Image1的Stretch属性设成true
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
x,y:integer;
map:Tbitmap; //位图实例变量
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var
filename:string;
imageh:integer; //image1的高
maph:integer; //图片的高
begin

filename:=ExtractFilePath(paramstr(0))+'000.bmp';
map:=Tbitmap.Create;
map.LoadFromFile(filename);
imageh:=Image1.Height;
maph:=map.Height;
x:=0;
y:=imageh-maph;
if (Timer1.Enabled = false )then Timer1.Enabled:=true;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
m,n:integer;
pic:Trect;
begin
if (y>0) then
begin
Image1.Canvas.Draw(x,y,map);
m:=x;
n:=y;
image1.Canvas.brush.color:=clBlue;
pic:=Rect(x,y,map.width,map.height); //把以前的覆盖掉
image1.Canvas.FillRect(pic);
y:=y-5;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if (Timer1.Enabled = true) then Timer1.Enabled:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
pic:Trect;
begin
image1.Canvas.brush.color:=clBlue;
pic:=Rect(0,0,image1.width,image1.height);
image1.Canvas.FillRect(pic);
end;

end.


这样也不行啊!
各位大哥帮我看看啊!
谢谢!
 
image1.Canvas.brush.color:=clBlue;
pic:=Rect(x,y,map.width,map.height);
image1.Canvas.FillRect(pic);//把以前的覆盖掉

为什么不能把以前的覆盖掉呢?
谢谢!
 
以前的是蓝色 覆盖的还是蓝色 你看的出?
 
不是啊
我覆盖的 图片 啊~~
 
Image1并没有图片导入呀 有图片的是map
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;


type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
x,y : Integer;
map : TBitmap;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
filename : String;
imageh,maph : Integer;
begin
filename := ExtractFilePath(Application.ExeName)+'000.bmp';
map := TBitmap.Create;
map.LoadFromFile(filename);
imageh := Image1.Height;
maph := map.Height;
x := 0;
y := imageh - maph;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
m,n : Integer;
pic : TRect;
begin
if (y>0) then
begin
Image1.Canvas.Draw(x,y,map);
y := y-5;
end;

end;
end.
 
上面的可以用的,呵呵
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
630
import
I
后退
顶部