图片浏览的问题 (100分)

  • 主题发起人 主题发起人 ycxy
  • 开始时间 开始时间
Y

ycxy

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个PageControl的一个Tabseet上放一个
ScrollBox,然后在其上作图片预览,可惜速度太慢,
请各位指教
Program:

procedure ShowImage;
var
v:TImage;
s:String;
begin
m:=100; //m是一个目录下图片的数量
for i:=1 to m do begin
s:= //获取文件名
v.Create(SB); //SB是ScroolBox
v.Parent:=SB;
v.left:=...; //...略
v.top:=...;
v.width:=...;
v.height:=..;
v.stretch:=true;
v.picture.loadfromfile(s)
end;
end;
 
你想说甚!
 
是不是想显示一批缩略图?
用100个image太占系统资源了. 还不如用一个image来显示. 用一个临时的
bitmap加载图片, 然后image.draw.
 
想做acdsee那样的浏览?是用不着用那么多的image,你可以也用listview,然后
customdraw item,这样一定是很快的。
 
没错, 用listview吧, 要快很多:-)
 
像Acdsee那样的缩略图是如何做的?
 
最简单是用一个Image来显示, 将你的100幅bitmap按顺序画在这一个
Image上. 只是加载时慢一点, 显示绝对快速.
 
同意Another_eyes使用一个bitmap, 把图片显示再上面,然后再
Canvas上直接draw(),计算好位置就可以了。
 
利用Image来显示Bitmap也许可以,我要显示的
是JPG文件,使用TJpegImage不能改变图像的
实际大小,更关键的是如何响应该预览图像的
Click事件
 
Acdsee那样的缩略图是用listview做的.
改变图片大小用canvas.StretchDraw.
 
就是呀, 要把tjpegimage的缩略图像转为bitmap类型的.
listview可以支持click事件呀.
 
JPG文件用TJPEGIMAGE如何能生成
缩略图(TJPEGIMAGE如何调整图像大小),
能不能给一个ListView生成
JPEG的简单例子,原理性示例即可
 
listview1.canvas.stretchdraw(rect, jpegimage);
 
使用listview1.canvas.stretchdraw(rect, jpegimage);
可以画上预览小图片,但有两个问题:
一是如何响应CLICK事件,
二是如何加入ListView成为Item(似乎与第一个问题有关)

 
>>二是如何加入ListView成为Item(似乎与第一个问题有关)
你就是要customdraw item,而并不是简单地画在上面.它就应该是item啊.
 
用image控件速度太慢,应该自己画
var bmp:TBitmap;
begin
bmp:=TBitmap.create;
bmp.loadfromfile('imagefile');
form1.canvas.draw(bmp);
end;
 
请问如何实现ListView的CustomDraw Item?
如果采用Image的Canvas画多个预览图片,
那如何响应鼠标单击Click事件和Hint呢
 
请问如何实现ListView的CustomDraw Item?
 
看/demos/customdraw/目录下的例子(是Ttreeview的例子,但是相通的)
另外看/demos/virtual listview/目录下的例子,是listview的新特性ownerdraw,
ownerdata的特性,它要求对显示数据完全自己处理,但显示速度快。
 
各位老兄帮帮忙,给一段用ListView的CustomDraw Item来
实现89x59的多幅图片大小的显示,
再加50分,急!急!
 
后退
顶部