在下面的代码中,我清除btnSaveClick中的图片,稍后在btnLoadClick中我想为图像分配图片,但它给出了AV,因为Graphic对象不存在.
我怎样才能完成任务?
procedure TForm1.btnSaveClick(Sender: TObject); var fs: TFileStream; s: TMemoryStream; buf: TBytes; z: integer; begin fs := TFileStream.Create('c:\temp\a.my',fmCreate); s := TMemoryStream.Create; try Image1.Picture.Graphic.SavetoStream(s); z := s.Size; SetLength(buf,z); s.Position := 0; s.ReadBuffer(buf[0],z); fs.WriteBuffer(z,SizeOf(integer)); fs.WriteBuffer(buf[0],z); finally s.Free; fs.Free; end; ShowMessage('ok'); Image1.Picture.Graphic := nil; end; procedure TForm1.btnLoadClick(Sender: TObject); var fs: TFileStream; s: TMemoryStream; buf: TBytes; z: integer; gc: TGraphicclass; begin fs := TFileStream.Create('c:\temp\a.my',fmOpenRead); s := TMemoryStream.Create; try fs.ReadBuffer(z,SizeOf(integer)); SetLength(buf,z); fs.ReadBuffer(buf[0],z); s.WriteBuffer(buf[0],z); s.Position := 0; Image1.Picture.RegisterFileFormat('jpg','jpeg files',gc); // Image1.Picture.Graphic.LoadFromStream(s); <-- AV here. Whats the proper way to do it? finally s.Free; fs.Free; end; ShowMessage('ok'); end;
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。