各位朋友,我在编写将文字转化成图像时,遇到了以下的一个问题,我的设想是:将文字以预先设定的字体、大小、字体颜色、背景颜色等写到一个图像中,可在实际编写中,我怎么也不能改变该图像的背景颜色,其它的字体、大小、字体颜色等都可以解决,唯独这里把我难住了,我仔细地查看了Tcanvas对象,也修改了属性Brush的Style属性为bsSolid,Brush的Color为我想要设定的颜色,可没有用,图像的背景颜色照样为白色。
  下面列出我的部分源程序,请各位帮帮忙,给予指点。
procedure TForm1.TxtToPic(TxtStr:TStrings);
var Pic:Tpicture;    i:Integer;
begin
    Pic:=TPicture.Create;
    Pic.Bitmap.Canvas.Font.Assign(FFont);
    pic.bitmap.canvas.brush.Style:=bsSolid;
    Pic.Bitmap.Canvas.Brush.Color:=clred;
     ......
     ......
    for i:=0 to TxtStr.Count-1 do
    begin
       pic.Bitmap.canvas.TextOut(0,ph,TempMemo.lines[i]);
       ph:=ph+LineHeight;
    end;
    pic.SaveToFile('TempPic.bmp');
    pic.Free;
end;

解决方案 »

  1.   

    我没有试过.
    但我给你一个建议.查出TLABEL的源码.因为它的透明属性为真时,它不会覆盖图片.
      

  2.   

    呵呵
    var
      pic: tpicture;
    begin
    try
      pic := tpicture.Create;
      pic.Bitmap.Height := 50;
      pic.Bitmap.Width := 200;
      pic.Bitmap.Canvas.Brush.Color := clRed;
      pic.Bitmap.Canvas.Rectangle(pic.Bitmap.Canvas.ClipRect);
      pic.Bitmap.Canvas.TextOut(10,20,'hello naughtyboy');
      pic.SaveToFile('c:\pic.bmp');
    finally
      pic.Free;end;
      

  3.   

    本来就是这样,没问题,你用PhotoShop改变背景色不也是这样嘛,你接着进行某些相关操作才能体现出背景色改变,不是吗?而且位图哪来的背景色的概念?