我动态加载一个图片,这个图片可能很多大约十几M源码如下:
Stream:=TMemoryStream.Create;
Stream.LoadFromFile(PicName);
Jpg:=TJPEGImage.Create;
try Jpg.LoadFromStream(stream);
Image1.Stretch:=false;
//image1.Left:=0;
//image1.Top:=0;
Image1.Height:=jpg.Height;
Image1.Width:=jpg.Width;
Image1.Picture.Assign(jpg);
Image1.BringToFront;
Image1.Visible:=true;
finally
Jpg.Free;
end;这样如果图片很大的话加载很慢,有没有办法能让图片加载快点。请给个思路或者给段代码
Stream:=TMemoryStream.Create;
Stream.LoadFromFile(PicName);
Jpg:=TJPEGImage.Create;
try Jpg.LoadFromStream(stream);
Image1.Stretch:=false;
//image1.Left:=0;
//image1.Top:=0;
Image1.Height:=jpg.Height;
Image1.Width:=jpg.Width;
Image1.Picture.Assign(jpg);
Image1.BringToFront;
Image1.Visible:=true;
finally
Jpg.Free;
end;这样如果图片很大的话加载很慢,有没有办法能让图片加载快点。请给个思路或者给段代码
解决方案 »
- 在RAVE中如何显示表中字段中保存的JPG格式的图片?
- 请问DELPHI中画图函数名称?
- 高手請進,郁悶!
- 为什么paintbox refresh 后,以前的图形没了
- 关于连接数据库不能捕获连接异常的问题?
- 如何在delphi下,用webBrowser时,如何禁止掉鼠标右键?(500分)分数不够可以再加。
- 各位 高手请进
- 哪有一个中小学生的档案数据库,本人想做一个关于学生信息系统的项目?
- 急急急! Couldn't find NTLDB 是什么意思呀?
- 请教大虾,关于关闭程序的问题.
- 小弟还有一个问题,如果是一个tabset控件,有多个页面,现在我右击某一页,选种该页,请问如何做呢?在线等待.
- 我写了一个程序,想在电脑启动时,该程序也一起启动,不知如何实现?
放个进度条
var
BufBit :array [0..255]of Byte;
F :File;
Stream :TMemoryStream;
NumRead :Integer;
begin
AssignFile(F,PICPath);
Seek(F,0);Progress.Max:=FileSize(F); //进度条初始化
Progress.Position:=0;Stream:=TMemoryStream.Create; //MemoryStream初始化
Stream.SetSize(FileSize(F));
Stream.Seek(0,soFromBeginning);repeat //读入内存
BlockRead(F,BufBit,sizeof(BufBit),NumRead);
Stream.Write(BufBit,sizeof(BufBit));
Progress.Position:=FilePos(F);
until NumRead = 0;Stream.Position:=0;JPEGImage := TJPEGImage.Create;
JPEGImage.LoadFromStream(Stream);Stream.Clear;
Stream.Free;
CloseFile(F);
end;
重写了一个
uses JPEG //引用JPEG单元
ProgressBar1: TProgressBar; //进度条
OpenDialog1: TOpenDialog; //打开文件对话框
Button1: TButton; //按钮
///////////////////////////////////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var
BufBit :array [0..255]of Byte;
F :File;
Stream :TMemoryStream;
NumRead :Integer;
JPEGImage:TJPEGImage;
begin
if not OpenDialog1.Execute then exit;
AssignFile(F,OpenDialog1.FileName); //打开JPG文件
Reset(F,1);
Seek(F,0);ProgressBar1.Max:=FileSize(F); //进度条初始化
ProgressBar1.Position:=0;Stream:=TMemoryStream.Create; //MemoryStream初始化
Stream.SetSize(FileSize(F));
Stream.Seek(0,soFromBeginning);repeat //读入到内存
BlockRead(F,BufBit,sizeof(BufBit),NumRead);
Stream.Write(BufBit,sizeof(BufBit));
ProgressBar1.Position:=FilePos(F);
until NumRead = 0;
CloseFile(F);Stream.Position:=0;JPEGImage := TJPEGImage.Create; //建立JPEG对象
JPEGImage.LoadFromStream(Stream); //复制内存到JPEG对象Stream.Clear;
Stream.Free; //清理内存self.Canvas.StretchDraw(self.Canvas.ClipRect,JPEGImage); //显示在Form布景上
JPEGImage.Free; //释放JPEG对象
end;