各位朋友,我在编写将文字转化成图像时,遇到了以下的一个问题,我的设想是:将文字以预先设定的字体、大小、字体颜色、背景颜色等写到一个图像中,可在实际编写中,我怎么也不能改变该图像的背景颜色,其它的字体、大小、字体颜色等都可以解决,唯独这里把我难住了,我仔细地查看了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;
下面列出我的部分源程序,请各位帮帮忙,给予指点。
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;
但我给你一个建议.查出TLABEL的源码.因为它的透明属性为真时,它不会覆盖图片.
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;