本帖最后由 sandok 于 2009-10-24 14:03:58 编辑

解决方案 »

  1.   

    直接用GDI+,每次再画时,填充一下canvasprocedure TForm1.btn1click(Sender : TObject);
     var Bmp : TGpBitmap;
         gp : TGpGraphics;
    begin
      Image1.canvas.fillrect(Image1.canvas.cliprect);
      Bmp := TGpBitmap.Create('a.png);
      Gr := GpRect(0,0,Image1.width,Image1.heidth);
      try
        gp := TGpGraphics.Create(Image1.Canvas.Handle);
        gp.DrawImage(Bmp,Gr);
      finally
        gp.Free;
        Bmp.Free;
      end;
    end;
      

  2.   

    请问楼上老大
    gr 是什么类型啊?
    TGpBitmap 和 TGpGraphics 需要uses什么?
      

  3.   

    gdi+ 网上有得下
    gr : tgprect;
      

  4.   

    他是用GDI+,这种方法是不错的方法,缺点是在设计期看不到效果。还有一种方式是用pngButton控件,这样可以不用写一行代码就把png图标载进来了。另外还有2种:1.用pngimage控件。
    2.用gifimage单元中的方法。前提是要将png转为透明的gif。gif支持透明的。
      

  5.   

     
    关于 mdejtod (稻草人) 老兄提供的方法: 
    GpRect总是报错,
    Gr := GpRect(0,0,Image1.width,Image1.height); //把你写的heidth修改成height之后
    expect ) 什么什么fount的错
    然后我把gp.DrawImage改成下面这样:
    gp.DrawImage(Bmp,0, 0, Image1.Width, Image1.height);
    成功了。但是,很纳闷,GpRect方法为什么用不了?