png图片使用pngimage.pas 1.54版的TPngObject加载,我想将图片中的一个区域显示在TImage中。搞了一天,确实想不到办法!

解决方案 »

  1.   

    pngimage 这个好象不行的,只能整个地拷, 用GPI+吧
      

  2.   

    procedure TForm1.btn2Click(Sender: TObject);
    var
        png: TPNGObject;
        r : TRect;
        bmp : TBitmap;
    begin
        r.Left := 0;
        r.Top := 0;
        r.Right := 150;
        r.Bottom := 150;
        bmp := TBitmap.Create;
        bmp.Canvas.Brush.Color := Form1.Color;
        png := TPNGObject.Create;
        png.LoadFromFile('c:\1.png');
        bmp.Assign(png);
        img1.Canvas.CopyRect(Rect(50,50,200,200),bmp.Canvas,r);
        png.Free;
        bmp.Free;
    end;我用的是Pngimage1.43
      

  3.   


    TdxPNGImage(Picture.graphic).StretchDraw(Canvas.Handle, DestRect, SorceRect);上边GDI+写成GPI+了,这个是那里边的函数
      

  4.   

    使用Bmp的法,Png的透明就掉了
      

  5.   

    使用Bmp的话,Png的透明就掉了
      

  6.   

    TdxPNGImage的确可以,DevExpress就是强。不过TdxPNGImage没有LoadFromResourceID方法,还得看TdxPNGImage好不好单独提出来。。
      

  7.   


    不是这样用的,你先定义TPICTURE类型,TPICTURE类型 LoadFromFIle 可以读进不同类型的图片 
    var
      Test: TPICTUREbegin
      Test := TPICTURE.Create;
      Test.loadFromFile('....');
      TdxPNGImage(Test.graphic).StretchDraw(Canvas.Handle, DestRect, SorceRect); // 这样就可以拉 
    end;