gpt4 book ai didi

delphi - 如何在delphi中一次将不同字体格式的文本绘制到 Canvas 上?

转载 作者:行者123 更新时间:2023-12-03 14:42:40 25 4
gpt4 key购买 nike

我一直在使用 DrawText 来满足我所有的“矩形文本”输出需求,但是我没有找到一种绘制字符串的方法,例如,将每个其他单词加粗或不同的颜色,或者更糟糕的是,随机选择的单词具有不同的背景。据我所知,可能没有一个程序可以做到这一点,我可能是错的,这是这个问题的要点。有人可以指出试图实现这种效果的人可能感兴趣的程序吗?此外,如果我是正确的并且没有简单的方法可以做到这一点,那么建议采取的路径是什么?当你开始思考由此产生的问题时,单独绘制每个单词,然后尝试将所有单词粘合在一起似乎是一场噩梦:当你有不同的字体或大小时,在单个水平线上正确的文本对齐。 ..

我有delphi xe3;如果有人可以改进我的问题和/或文字的措辞,请这样做。

最佳答案

您可以从 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;

Screenshot

无论如何,如果您需要更高级的文本输出例程,为什么不看看 DirectWrite

关于delphi - 如何在delphi中一次将不同字体格式的文本绘制到 Canvas 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16061328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com