举个例子:
比如我有个 Image1: TImage,
我先这样做:
Image1.Picture.Assign(MyBitmap1)
然后再需要的时候要将 MyBitmap2 赋值给 Image1:
Image1.Picture.Assign(MyBitmap2)那么MyBitmap1所占的资源会不会释放?

解决方案 »

  1.   

    对不起,不应该说是 MyBitmap1 所占的资源,是Image1.Picture中的Bitmap
      

  2.   

    它不是被替换成MyBitmap2了吗?这样怎么能被释放
      

  3.   

    不会。所谓的assign其实就是将对象的指针进行连接,并非能够释放对象的空间。
      

  4.   

    那我下面这样的做法应该没有问题吧:MyBitmap1 := TBitmap.Create;
    ... //从文件中读入图片1
    Image1.Picture.Assign(MyBitmap1);
    MyBitmap1.Free;然后再需要的时候:
    MyBitmap2 := TBitmap.Create;
    ...//从文件中读入图片2
    Image1.Picture.Assign(MyBitmap2);
    MyBitmap2.Free;
      

  5.   

    Image1.Picture.Assign(MyBitmap1);
    Image1.Picture是引用的MyBitmap1;如果位图要修改,此时才进行复制。Image1.Picture.Assign(MyBitmap2);和上面相仿。
    将Image1.Picture指向MyBitmap2,中间没有资源丢失。
    如果你自已没有执行MyBitmap1释放指令,MyBitmap1不会失放。
    你的这几句没有问题,没有资源丢失。