首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

TWICImage中的LoadFromStream重写,主要是要释放LStream := TStreamAdapter.Create(FData);这句话,该如

2012-03-27 
TWICImage中的LoadFromStream重写,主要是要释放LStream : TStreamAdapter.Create(FData)这句话procedure

TWICImage中的LoadFromStream重写,主要是要释放LStream := TStreamAdapter.Create(FData);这句话
procedure TWICImage.LoadFromStream(Stream: TStream);
var
  LStream: TStreamAdapter;
  BitmapDecoder: IWICBitmapDecoder;
  LBitmapFrame: IWICBitmapFrameDecode;
  LGUID: TGUID;

  procedure WicCheck(Result: HRESULT);
  begin
  if Failed(Result) then
  raise EInvalidGraphic.Create(SInvalidImage);
  end;
begin
  FreeAndNil(FBitmap);

  FData.Clear;
  FData.CopyFrom(Stream, Stream.Size - Stream.Position);
  FData.Position := 0;
  LStream := TStreamAdapter.Create(FData); // 要把这个函数的变量释放掉,它导致内存泄露,烦死了

  WicCheck(FImagingFactory.CreateDecoderFromStream(LStream, guid_null, WICDecodeMetadataCacheOnDemand, BitmapDecoder));
  WicCheck(BitmapDecoder.GetContainerFormat(LGUID));
  EncoderContainerFormat := LGUID;
  WicCheck(BitmapDecoder.GetFrame(0, LBitmapFrame));
  WicCheck(FImagingFactory.CreateBitmapFromSource(LBitmapFrame, WICBitmapCacheOnLoad, FWicBitmap));
  WicCheck(FWicBitmap.GetSize(FWidth, FHeight));

  FFormatChanged := False;
end;




[解决办法]
直接改源代码不得??

热点排行