我一直在使用DrawText我所有的"矩形文本"输出需求,但是我没有看到绘制字符串的方法,例如,每个其他单词都是粗体或不同的颜色,或者更糟糕的是,不同的背景对于所述随机选择的单词.据我所知,可能没有单一程序可以做到这一点,我可能错了,这是这个问题的要点.有人能指出试图达到这种效果的人可能感兴趣的程序吗?另外,如果我是正确的并且没有简单的方法,那么建议的路径是什么?分别绘制每个单词,然后尝试将所有这些粘合在一起似乎是一场噩梦,当你开始考虑可能由此产生的问题时,我的头脑:当你有不同的字体或大小时,在单个水平线上进行正确的文本对齐. ..
我有delphi xe3; 如果有人可以改进我的问题和/或文字的措辞,请这样做.
And*_*and 19
您可以从VCL获得一些帮助,因为该TCanvas.TextOut方法会增加x笔位的坐标乘以输出字符串的宽度:
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.MoveTo(20, 100);
Canvas.Font.Name := 'Segoe UI';
Canvas.Font.Color := clMaroon;
Canvas.Font.Style := [];
Canvas.Font.Height := 64;
Canvas.TextOut(Canvas.PenPos.X, Canvas.PenPos.Y, 'This ');
Canvas.Font.Color := clNavy;
Canvas.Font.Style := [fsBold];
Canvas.Font.Height := 64;
Canvas.TextOut(Canvas.PenPos.X, Canvas.PenPos.Y, 'is ');
Canvas.Font.Name := 'Bookman Old Style';
Canvas.Font.Color := clBlack;
Canvas.Font.Style := [fsItalic];
Canvas.Font.Height := 64;
Canvas.TextOut(Canvas.PenPos.X, Canvas.PenPos.Y, 'a ');
Canvas.Font.Name := 'Courier New';
Canvas.Font.Color := clSilver;
Canvas.Font.Style := [];
Canvas.Font.Height := 64;
Canvas.TextOut(Canvas.PenPos.X, Canvas.PenPos.Y, 'test!');
end;
Run Code Online (Sandbox Code Playgroud)
截图http://privat.rejbrand.se/canvastextpos.png
无论如何,如果你需要更高级的文本输出例程,为什么不看看DirectWrite呢?
| 归档时间: |
|
| 查看次数: |
23134 次 |
| 最近记录: |