能不能用image1.picture的方法直接从memorystream中去数据

解决方案 »

  1.   

    如下代码是可以的:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      bitmap:TBitmap;
      memorystream:TMemoryStream;
    begin
      bitmap:=Tbitmap.Create;
      memoryStream:=TMemoryStream.Create;
      MemoryStream.LoadFromFile('D:\save_blue.bmp');
      bitmap.LoadFromStream(memorystream);
      image1.Picture.Graphic:=bitmap;
      memoryStream.Free;
      bitmap.Free;
    end;
    你的问题可以出在memorystream没有东西(没有存进图片)。
      

  2.   

    var bitmap:Tbitmap;
     
      bitmap:=Tbitmap.Create;
      bitmap.LoadFromStream(memorystream);
      image1.Picture.Graphic:=bitmap; 这儿没错,应该能正常显示,关键是你的memorystrea中的信息是不是正确。
      

  3.   

    我的memorystream是自己按bmp文件格式拼成的,会不会因为这个
      

  4.   

    可以用TStringStream:
     Bmp:TBitmap;
       SS:TStringStream;
      bmp:=TBitmap.Create;
       SS:=TstringStream.Create('');
      写:
      Bmp.LoadFromFile(FileName);
      Bmp.SaveToStream(SS);
      读:
      bmp.LoadFromStream(SS);
      Image.Assign(bmp);
      

  5.   

    我的代码很麻烦就不贴了,方法是这样的:我要取一个特大bmp图片的一部分显示在image中,我先把源图的文件头读出来,把头中的表示文件大小和长宽的数据改成新的小图的数值,再去源图的数据中读出想要显示的那部分数据,再把该过的头和读出的数据组成新的图像。-------不知道这个思路是否正确??
      

  6.   

    给你代码!
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    opendialog1.Execute;
    Image1.Picture.LoadFromFile(opendialog1.FileName);
    end;
      

  7.   

    memorystream.SaveToFile('e:\t\m2.bmp');
    image1.Picture.LoadFromFile('e:\t\m2.bmp');
    用下面程序没反应(不显示)为什么
    var bitmap:Tbitmap;  bitmap:=Tbitmap.Create;
      memorystream.position:=0;
      bitmap.LoadFromStream(memorystream);
      image1.Picture.bitmap.assign(bitmap);