如何在paintbox上textout出不同的字体?(50分)

  • 主题发起人 主题发起人 cool1
  • 开始时间 开始时间
C

cool1

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在paintbox上textout出一个字符串,而每个字符具有不同的字体?
 
写完一个字换一种字体不就可以了吗?
 
procedure TForm1.PaintBox1Click(Sender: TObject);
var tmp:Integer;
begin
with PaintBox1.Canvasdo
begin
Font.Name:='Arial';
Textout(10,10,'P');
tmp:=TextExtent('P').cx;
Font.Name:='MS Sans Serif';
Textout(10+tmp,10,'a');
tmp:=TextExtent('a').cx;
... ...
end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var
i,j,z:integer;
txt:widestring;
begin
txt:='这仅仅是一个实验!';
with PaintBox1.Canvasdo
begin
j:=0;
z:=0;
for i:=1 to length(txt)do
begin
font.name:=Screen.Fonts.Strings[j];
TextOut(10+z, 20, copy(txt,i,1));
z:=z+textwidth(copy(txt,i,1));
j:=j+1;
if j=screen.Fonts.count then
j:=0;
end;
end;
end;
 
每Textout一次,便将Panitbox的Canvas的Font改成你需要的字体。
 
呵呵, 借分提问:
如何显示竖排的text?
 
to schiesser 用canvas.textout(x,y+height);
例x:=10,y:=y+height
height:=canvas.textheight.
记着给分!
 
这样文字就是竖排的吗?我要的不是中文竖排方法,而是类似于坐标轴y轴注释那样的竖排.
 
正常输出然后转90度就可以了.
 
多人接受答案了。
 
后退
顶部