我想用image和lable做一个图片按钮
但是lable的文字却不显示。这是为什么?constructor TImageButton.Create(AOwner: TComponent);
var
  lb: TLabel;
begin
  inherited Create(AOwner);
  FPictureDown := TPicture.Create;
  FPictureHot := TPicture.Create;
  FPictureDisable := TPicture.Create;
  FPictureNormal := TPicture.Create;  lb := TLabel.Create(nil);
  lb.Width := Width;
  lb.Height := Height;
  lb.Top := Top;
  lb.Left := Left;
  lb.Parent := GetParentForm(Self);
  lb.Caption := 'aaaaa';         //设置了caption的,创建后却什么都没有
  lb.BringToFront;
  Invalidate;
end;

解决方案 »

  1.   

    如果做控件的话,不建议这样做。你应该在图片上用 drawtext 或者 textout 来输出文字。
    注意处理输出文字的长度和宽度与图片的大小比较,在决定文字输出要不要断行或者省略显示之类的。
      

  2.   

    而且, Timage 不是容器类
      

  3.   


    我是想做一个支持png的按钮,bitbtn和speedbutton都不支持png
    有什么其他办法吗
      

  4.   

    用一个容器控件,譬如TPanel,在上面在放一个image和一个label就可以了
      

  5.   

    tframe也可以的说,还更简单哦
      

  6.   

    把png转成bitmap效果是一样的,不用弄那么复杂的
      

  7.   


    兄弟你是不清楚bmp和PNG有什么区别吧。
      

  8.   


    我的目的就是使用PNG的透明,有了PANEL,透明就没用了。这个控件就没意义了
      

  9.   

    你应该知道人家说的 BMP 是指 32位的 BMP,同样有透明度信息