//加载png图像资源到Timage
procedure LoadPngRes(var img: TImage; ResName, ResType: PChar);
var
  png: TPNGObject;
  res: TResourceStream;
begin
  png := TPNGObject.Create;
  res := TResourceStream.Create(HInstance, ResName, ResType);
  try
    png.LoadFromStream(res);
    img.Picture.Assign(png);
  finally
    res.Free;
    png.Free;
  end;
end;我用的是TPngImage这个组件
我想把PNG加载进来 然后在上面加上文字 做成按钮
我用img.canvas.textout 提示 必须要是bitmap的才能重绘 但我现在必须用png啊
怎么解决呢  我百度 gg了半天 找不到方法

解决方案 »

  1.   

    何不换种思路,将Label叠加到上面。或者自己封装一个这样的控件。
      

  2.   

    转成bmp 吧。。 
    再 读当前图的背景合成到里面。。
      

  3.   

    若用Timage,那只能是bmp格式才可以绘
      

  4.   

    bmp支持透明吗?如何实现呢?
      

  5.   

    先把PNG转成BMP,然后就可以写字了。你说的透明是什么意思?
      

  6.   

    使用GDI+来实现
    1、首先将PNG绘制到PictureBox上
    2、再在PNG上绘制文字
      

  7.   

    透明就是说  支持透明颜色  比如把一个ps里做的png图片  放在窗口(或容器)上  窗口(或容器)是什么颜色     图片底色就变成了什么颜色  类似半透明的效果
      

  8.   

    透明就是说  支持透明颜色  比如把一个ps里做的png图片  放在窗口(或容器)上  窗口(或容器)是什么颜色     图片底色就变成了什么颜色  类似半透明的效果