下面两个Stream有什么不同?
为什么我用第一种方法得不到想要的图片
var
  tmp: TMemoryStream;
begin
  tmp := TMemoryStream.Create;
  Image1.Canvas.LineTo(100,100);
  Image1.Picture.Bitmap.SaveToStream(tmp);//成功
  tmp.SaveToStream('test.bmp');//成功
  Image2.Picture.Bitmap.LoadFromStream(tmp);//不成功,看不到图片无错误提示
end;
而第二种可以?
var
  tmp: TMemoryStream;
begin
  tmp := TMemoryStream.Create; 
  tmp.LoadFromFile('test.bmp');
  Image2.Picture.Bitmap.LoadFromStream(tmp);//成功,可看到图片
end;

解决方案 »

  1.   

    tmp.SaveToStream('test.bmp');//造成了流已经到了最后,
    你把流位置重新弄到开始处
      

  2.   

    设定 tmp.Position := 0 既可
    如下:
      tmp := TMemoryStream.Create;
      Image1.Canvas.LineTo(100,100);
      Image1.Picture.Bitmap.SaveToStream(tmp);//成功
      tmp.Position := 0;
      Image2.Picture.Bitmap.LoadFromStream(tmp);//不成功,看不到图片无错误提示
      tmp.Free;
      

  3.   

    但是我删除tmp.SaveToStream('test.bmp');这一句也一样呀
      

  4.   

    var
      tmp: TMemoryStream;
    begin
      tmp := TMemoryStream.Create;
      Image1.Canvas.LineTo(100,100);
      Image1.Picture.Bitmap.SaveToStream(tmp);//成功
      tmp.SaveToStream('test.bmp');//成功
      tmp.Position := 0;  //加上这句试试!!
      Image2.Picture.Bitmap.LoadFromStream(tmp);//不成功,看不到图片无错误提示
    end;
      

  5.   

    呵呵,可以了,就是少了这句tmp.Postion:=0;谢谢大家 :)
      

  6.   

    tmp.SaveToStream('test.bmp');
      tmp.Position:=0;//加一句
      Image2.Picture.Bitmap.LoadFromStream(tmp);
    再试试方法一看看!