我是这样实现的
spbt是speedbutton组件var bt:TBitmap;
begin
 bt:=TBitmap.create;
 bt.canvas.brush.color:=rgb(23,42,145);
 bt.canvas.textout(12,10,'测试');
 bt.canvas.fillrect(rect(0,0,spbt.weight,spbt.height));
 spbt.glyph:=bt;
 运行后spbt的界面颜色没有改变,还是透明色,有什么办法可以让这个组件的颜色改变

解决方案 »

  1.   

    bt:=TBitmap.create;这句后面加上 bt.Width:=25;
     bt.Height:=25;
      

  2.   

    begin
      bt := TBitmap.create;
      bt.Height := spbt.Height;
      bt.Width := spbt.Width;  bt.canvas.brush.color:=rgb(23,42,145);
      //这个要在前面,要不然你后面的文字要被盖住
      bt.canvas.fillrect(rect(0,0,spbt.width,spbt.height));
      //把图片的右下角的Color跟背景色不一样,要不然透明
      bt.canvas.brush.color := clBlack;
      bt.canvas.fillrect(rect(0,bt.Height-1,1,bt.Height));
      //bt.Canvas.Pen.Color := clRed;
      bt.canvas.textout(12,10,'测试');  spbt.glyph:=bt;
      bt.Free; //