image.picture在读一个图片时,如何显示进度条?(50分)

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

sdl

Unregistered / Unconfirmed
GUEST, unregistred user!
我用image.picture.loadfromfile读进一个图片,但是由于图片过大(约有40M),并且机器运行也慢,所以,我想显示一个进度条,让用户知道他的图片正在读入。
 
好象 TImage 有个 process 属性?事件?
看看它的源码,只有个印象。
 
image有一个progress事件,但无法触发这个事件。
在这个事件中,提供了stage,percentdone,redrawnow,r,msg参数,但没一个可以用的。
 
估计要做一个线程监视内存变化。
 
确实很奇怪. 听
 
I want to know.
 
用image有一个onprogress事件不行吗?

如果这样
 
为什么不用 TStream,容易控制进度条
 
to sdl:
我来了,一定要多给点分啊!我刚进大富翁,没什么资本,呵呵
 
请看看Delphi带的jpeg.pas的源程序中的显示进度事件,也许会有帮助。
 
可以自己写程序,开个进程。
在进程中把文件以文件流的方式读出,并再以流的方式,装入image。

Image1.Picture.Bitmap.LoadFromStream()

适当的定义流的大小就可以掌握读取进度了。
 
大家看看delphi的帮助中是这样说的。
OnProgress:
Note: The PercentDone parameter is only an approximation. With some image formats, the value of PercentDone may actually decrease from the value in previous events, as the graphic object discovers there is more work to do.

property IncrementalDisplay: Boolean;
Description
Set IncrementalDisplay to True on large compressed images that take a long time to load or on images that may be altered by a computationally slow process. When IncrementalDisplay is True, partial renderings of the image are drawn periodically during slow operations such as loading. Set IncrementalDisplay to False to wait until the entire operation is complete before drawing the image.

For some classes of graphic objects, an OnProgress event occurs at various points during slow operations. If IncrementalDisplay is True, the OnProgress event occurs immediately after the approximate image is drawn. If IncrementalDisplay is False, OnProgress occurs, but the image is not updated.

能不能触发OnProgress事件应该是与图形文件的格式有关,我试了一下,如果是jpeg图的话,
在OnProgress事件中是可以判断装入一个图形的多少的,而bmp图则根本没有触发OnProgress
事件。
 
请用ImageEn控件,DELPHI的控件在装入BMP文件时是不能处理ONPROG....的
ImageEN就可以,它是一个很好的图形控件,支持文件的放大缩小,
多种格式的图片,包括PNG(PNG这种格式很少东东能解),
它的ONPORG......事件就可以了。
因为它好像是用OBJ链接的,所以在设计期无法装入图片。只能在运行中用
LOADFROMFILE方法了。
ftp://my.szptt.net.cn/JGK8DXS9XFUCP/
的DEPHIVCL目录中找找,肯定的有。如果真的找不到,我可以发给你。
这控件是比什么IMAGELIB好用多了,不知为什么知名度那么小。
 
你要的玩意儿已经给你了。不要再去找了,加示例1M多,有点大,请耐心。
 
后退
顶部