我在使用Delphi6的TPicture时发现了一个现象,TPicture的Graphic成员必须在Bitmap使用后使用,因为使用Bitmap前Graphic并没有被Create。所以要想先用他,(因为你要设置图像,比如长,宽等)就要先调用TPicture对象.Graphic :=TPicture对象.Bitmap.Create;才能用。但用完就不用你free了。
呵呵,这也应该算是VCL的一个毛病了吧。

解决方案 »

  1.   

    TGraphic是个抽象类,TBitmap才是真正实现的类。不是VCL的毛病,而是你对VCL的认识不够。
      

  2.   

    原来如此,那我们使用TPicture时还要自己create TGraphic多不方便呀。vcl为什么不自己做这个工作呢?
      

  3.   

    就向stringlist和strings一样
    要创建strings必须用stringlist的create方法创建,因为strings只有一个虚构造函数
      

  4.   

    没错。但是我总觉得我们用的是TPicture,而不是TGraphic,那么她就应该在Create中自己对TGraphic的对象进行创建,因为这是TPicture的一个成员,所以TPicture 应该自己管理呀。
      

  5.   

    再说一次TGraphic是抽象类,它是不负责建立真正的图像的,真正建立图像的地方在它的子类中。
    当你给一个TPicture分配的时候,TPicture就会建立一个。仔细看看VCL的源码吧,会有帮助的。
      

  6.   

    同意GoldProgramer() 
    据我了解,这是为了扩展性,如果你想处理JPEG等图像,就可以自己写各子类来处理
      

  7.   

    啊..好困..
    我是没有看过VCL啦..
    但..这个就算不像楼上那些牛人所说的那样的话..呵呵..
    应该不算BUG吧...
    当然..我们菜鸟级人物应该相信牛人!!!
      

  8.   

    为什么要用TPicture?直接用TBitmap不是挺好吗?个人认为TPicture只是用来满足各种图片格式的兼容性要求的。