多幅静止图片实现动画的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 heping_soft
  • 开始时间 开始时间
H

heping_soft

Unregistered / Unconfirmed
GUEST, unregistred user!
有多幅静止的图片,在一个控件上显示(如:Image),要实现动画的效果,在动画播放时,要能够响应键盘和鼠标?(非要用线程吗?)
分不够再加!!!
 
有多幅静止的图片,在一个控件上显示(如:Image),要实现动画的效果,在动画播放时,要能够响应键盘和鼠标?(非要用线程吗?)
分不够再加!!!
 
用线程会好一些,Timer也可以实现,但可能会顿。
 
用Timer的话,鼠标和键盘基本就不响应了(反应很缓慢),图片时连续循环播放的,
 
让timer响应键盘鼠标事件不就得了
 
我试了一下,24张图,用image控件和timer控件实现动画,时间间隔为350ms

没问题,其间可以响应鼠标和键盘啊
 
把你的图片编辑排成一排,用Animate,代码都不用写了,更加不用Timer了
 
Timer完全可以的,就算间隔10ms,照样没问题,不过用image的话,建议加上
form1.DoubleBuffered:=true;
 
关注!我也遇到这个问题,图像不能刷新,全都覆盖了.
 
老大,就用线程吧,多学点知识总是好的,别老是逃避问题
 
那么多图片doublebuffer不太好
用2个btimap变量来回切换把,原理类似缓冲
 
学习线程
 
以下是一个简单的image中图片更换代码,不过,好像不太好用,总能保留上一次的图片,不知道什么原因。
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
self.Image1.Picture.Bitmap.Assign(nil);
if self.ImageList1.GetBitmap(0,bmp) then
self.Image1.Picture.Bitmap.Assign(bmp)
else
showmessage('error');
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
self.Image1.Picture.Bitmap.Assign(nil);
if self.ImageList1.GetBitmap(1,bmp) then
self.Image1.Picture.Bitmap.Assign(bmp)
else
showmessage('error');
end;
 
我用2个image切换,对于大图片效果还行。。。。。

var
i:integer;
begin
i:=0;
while i<imagelist1.Count do
begin
image2.Picture:=nil;
imagelist1.GetBitmap(i,image2.Picture.Bitmap);
image1.Picture:=image2.Picture;
application.ProcessMessages;
sleep(100);
inc(i);
if i=imagelist1.Count then
i:=0;
end;
end;
 
1、双缓冲技术
2、后台更新
3、局部更新
最终要的是多线程(一个子线程就够了)
 
有一个很好的控件你可以式一下,不过很占资源。
picshow
 
即使是放幻灯的软件也是用线程的,所以,为什么不用
 
使用session控件,到网上搜一下吧
 
这样不行吗?先把图片的路径保存到一个memo里,然后用个timer控件就可以了啊,其间响应鼠标和键盘都没问题啊。

i为全局变量
procedure TForm1.FormShow(Sender: TObject);
begin
i:=0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if i<=memo1.Lines.count-1 then
begin
try
image1.Picture.LoadFromFile (memo1.Lines);
except
end;
StatusBar1.Panels[0].Text :=' 时间间隔:'+inttostr(timer1.Interval)+'毫秒';
StatusBar1.Panels[1].Text :='动画:'+inttostr(i+1)+'/'+inttostr(memo1.Lines.count)+' 文件名:'+memo1.Lines;
i:=i+1;
end
else
begin
i:=0;
end;
end;
 

Similar threads

D
回复
0
查看
850
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部