关于TBitmap的使用问题。。 ( 积分: 50 )

  • 主题发起人 主题发起人 superd
  • 开始时间 开始时间
S

superd

Unregistered / Unconfirmed
GUEST, unregistred user!
在win2003操作系统,D7下编译;
放到win98下运行会挂掉,操作系统无法响应;测试代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
bitmap:tbitmap;
begin
for i:=0 to 8 do
begin
bitmap:=tbitmap.create;
bitmap.loadfromfile('111.bmp');
end;
end;
 
在win2003操作系统,D7下编译;
放到win98下运行会挂掉,操作系统无法响应;测试代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
bitmap:tbitmap;
begin
for i:=0 to 8 do
begin
bitmap:=tbitmap.create;
bitmap.loadfromfile('111.bmp');
end;
end;
 
代码的写法本身就不对,你create了8次,晕
 
应该这样
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
bitmap:tbitmap;
begin
bitmap:=tbitmap.create;
for i:=0 to 8 do
begin
bitmap.loadfromfile('111.bmp');
end;
end;
要不然这样
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
bitmap:array[0..8] of tbitmap;
begin
for i:=0 to 8 do
begin
bitmap:=tbitmap.create;
bitmap.loadfromfile('111.bmp');
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
bitmap: array[0..8] of tbitmap;
begin
for i:=0 to 8 do
begin
bitmap :=tbitmap.create;
bitmap.loadfromfile('111.bmp');
end;
end;
 
to wangxiang0805,pascal!:
这段代码在win98下依然是挂掉;无法响应。。。
 
是不是圖很大喲!會占用很多資源的
 
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
bitmap: array[0..8] of tbitmap;
begin
bitmap :=tbitmap.create;
for i:=0 to 8 do
begin
bitmap.loadfromfile('111.bmp');
end;
end;
 
111.bmp是否存在
 
111.bmp怎可能存在,文件名有问题。
 
樓上所說的.loadfromfile要指定完整路徑。
 
文件是存在的,而且会显示出图片。就是刚显示一下就不动了。奇怪
 
循环中加 application.processmessages 或者考虑起子线程
 
比如是下面的代码,在win98+delphi7会死机,win2000以上没问题。谁可以解释一下。
代码执行到MyBitmap2.LoadFromFile('e:/arrow1l.bmp');这句就出现问题了。

   MyBitmap1 := TBitmap.Create;
   MyBitmap1.LoadFromFile('e:/chemical.bmp');
   MyBitmap2 := TBitmap.Create;
   MyBitmap2.LoadFromFile('e:/arrow1l.bmp');
   MyBitmap3 := TBitmap.Create;
   MyBitmap3.LoadFromFile('e:/arrow1dl.bmp');
   MyBitmap4 := TBitmap.Create;
   MyBitmap4.LoadFromFile('e:/arrow1dr.bmp');
 
你试试在TBitmap.Create第2个的时候,把第一个释放掉,看看是否死机
 
   MyBitmap1 := TBitmap.Create;
   MyBitmap1.LoadFromFile('e:/chemical.bmp');
MyBitmap1.free;
   MyBitmap2 := TBitmap.Create;
   MyBitmap2.LoadFromFile('e:/arrow1l.bmp');
MyBitmap2.free;
这样是可以。但是如果使用Image1.Picture.LoadFromFile('...')的话,就释放不了
 
后退
顶部