B
bangzhu1111
Unregistered / Unconfirmed
GUEST, unregistred user!
一个图片预览的功能
在一个ListView中游览本机JPEG或BMP的图片
写了一个线程动态加载bitmap到imagelist中,运行结果在listview中会有几率地出现黑图,其它图片都可以正常显示,是不是Timagelist的add方法的问题呢,请高手指教!
程序如下
procedure TAddPicThread.Execute;
var i:integer;
tmpNode: TListItem;
AJpg: TJpegImage;
Abmp: Graphics.Tbitmap;
picList : TstringList;
begin
FreeOnTerminate := True;
while not Terminated do
begin
picList:= tStringlist.Create;
sleep(50);
PicPath := FormMain.PicPath;
FormMain.StatusBar1.Panels[1].Text:= PicPath;
if FCurDir <> PicPath then
begin
FImgList.Clear;
FCurDir := PicPath;
picList := SearchPicFiles(FCurDir);
for i := 0 to picList.Count - 1 do
begin
PicPath := FormMain.PicPath;
if FCurDir <> PicPath then
begin
picList.Free;
break;
end
else begin
AJpg := TJpegImage.Create;
Abmp := Graphics.Tbitmap.Create;
ThumbBmp := Graphics.Tbitmap.Create;
try
if IsJpgFile(picList) then
begin
JpgToBmp(picList, AJpg, Abmp);
end
else
begin
Abmp.LoadFromFile(picList);
end;
ThumbBmp.Height := PicHeight;
ThumbBmp.Width := PicWidth;
ThumbBmp.Canvas.StretchDraw(ThumbBmp.Canvas.ClipRect, Abmp);
sleep(50);
FImgList.Add(ThumbBmp, nil);
finally
AJpg.Free;
Abmp.Free;
ThumbBmp.Free;
end;
end;
end;
end;
picList.Free;
end;
end;
在一个ListView中游览本机JPEG或BMP的图片
写了一个线程动态加载bitmap到imagelist中,运行结果在listview中会有几率地出现黑图,其它图片都可以正常显示,是不是Timagelist的add方法的问题呢,请高手指教!
程序如下
procedure TAddPicThread.Execute;
var i:integer;
tmpNode: TListItem;
AJpg: TJpegImage;
Abmp: Graphics.Tbitmap;
picList : TstringList;
begin
FreeOnTerminate := True;
while not Terminated do
begin
picList:= tStringlist.Create;
sleep(50);
PicPath := FormMain.PicPath;
FormMain.StatusBar1.Panels[1].Text:= PicPath;
if FCurDir <> PicPath then
begin
FImgList.Clear;
FCurDir := PicPath;
picList := SearchPicFiles(FCurDir);
for i := 0 to picList.Count - 1 do
begin
PicPath := FormMain.PicPath;
if FCurDir <> PicPath then
begin
picList.Free;
break;
end
else begin
AJpg := TJpegImage.Create;
Abmp := Graphics.Tbitmap.Create;
ThumbBmp := Graphics.Tbitmap.Create;
try
if IsJpgFile(picList) then
begin
JpgToBmp(picList, AJpg, Abmp);
end
else
begin
Abmp.LoadFromFile(picList);
end;
ThumbBmp.Height := PicHeight;
ThumbBmp.Width := PicWidth;
ThumbBmp.Canvas.StretchDraw(ThumbBmp.Canvas.ClipRect, Abmp);
sleep(50);
FImgList.Add(ThumbBmp, nil);
finally
AJpg.Free;
Abmp.Free;
ThumbBmp.Free;
end;
end;
end;
end;
picList.Free;
end;
end;