我做了个程序,主界面是一张大图,在加载的时候明显感到有延迟,怎么解决?(30分)

林枫

Unregistered / Unconfirmed
GUEST, unregistred user!
当程序启动时,明显的先看到主窗口,然后再贴上图片,可能是因为这张图太大了(800*600),
是不是分成若干小图,就能解决呢??

谁有好界面的例子(源码)看看?
 
深度论坛曾经提到过一样的题,思路一流,自己去查。
 
//明显的先看到主窗口,然后再贴上图片,
这样试试:
将你的放image的form做成透明风格的。这样我想就不会看到主窗口了。

good luck!
 
把放这张图的IMAGE的VISIBLE:=FALSE;
然后在FORMCREATE的时候加上这句 试试。下面的是对于BMP图象的。
Self.brush.bitmap:=image1.picture.bitmap;
 
试试Formsplash:=TFormsplash.Create(Application);
Formsplash.Show;
Formsplash.Update;//重点是这句
 
除了 sunys 说的,我基本都试过了,效果都不理想
sunys说的挺有创意 :)

我想是不是把图分成若干小图后,拼在一起,会好一点(我看一些界面都是这和做的)
 
若干个,这样好吗,如果有效果,当然这样也行。方法很多,取一个适当的好的就行了
 
>> Formsplash.Show;
>> Formsplash.Update;//重点是这句
同意lnboy,这两句可以写在Form的Create事件里
 
 干嘛不试试先用图形编辑工具把图形压缩到最小呢,很多网站都有很大的图片,用
firework就可进行图片分割,而且用FLASH保存过的图片会明显小很多哦(我记得我有
一jpg图片100多K用FLASH保存成GIF后,只有20多K呢)
 
使用bmp格式的图片,虽然文件大些,但是显示速度快。
你可以试试同一张图的jpg和bmp速度,可以感觉得出的,bmp明显快
 
的确,用 bmp 比 jpg 显示快。空间换时间嘛:)

 
哦,明白了,就这点小问题,在 Delphi 下,就不用这么复杂了。一会儿空了
我给你写一个完整的段子吧。大约在晚上 10:30 的时候只要进得了 DFW ,我
就贴在下面。我要装的是一幅 1024x768 16M色的 JPEG ,你看它会不会延时。
 
只要在formcreate中加载图片(而不要在formshow里加载)并且加上下面这句就不会出现你说的情况了:
doublebuffered := true;
 
有多个方案,选一个贴来(楼上各位的方法也正确)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Jpeg;
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
jpg:TJpegimage;
implementation
{$R *.DFM}
procedure TForm1.FormPaint(Sender: TObject);
begin
self.Canvas.Draw(0,0,jpg);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
self.Canvas.Draw(0,0,jpg);
end;
initialization
jpg:=TJpegimage.Create;
jpg.LoadFromFile('1024x768_004.jpg');
finalization
jpg.Free;
end.
 
的确用.bmp比.jpg快出许多
谢谢各位
 
顶部