Delphi 如何在画布上以左对齐方式绘制文本?

Delphi 如何在画布上以左对齐方式绘制文本?,delphi,shape,delphi-2010,Delphi,Shape,Delphi 2010,我想在画布上画一个矩形,然后用文本填充它。我试过使用下面的代码,但只有正确对齐才能成功 有人能帮我吗?如何在画布上以左对齐方式绘制文本 {Header Table} SetStyleHuruf(FCanvas, fsBold, 12, clWhite, 'Maiandra GD'); Brush.Color := color; Rectangle(cx+50, cy-50, cx+370, cy - 30); TextOut(round(cx + 215), cy-50, Name);` 我将

我想在画布上画一个矩形,然后用文本填充它。我试过使用下面的代码,但只有正确对齐才能成功

有人能帮我吗?如何在画布上以左对齐方式绘制文本

{Header Table}
SetStyleHuruf(FCanvas, fsBold, 12, clWhite, 'Maiandra GD');
Brush.Color := color;
Rectangle(cx+50, cy-50, cx+370, cy - 30);
TextOut(round(cx + 215), cy-50, Name);`

我将使用DrawText函数代替textout,微软网站对此进行了解释

DrawText函数在指定的矩形中绘制格式化文本。它根据指定的方法格式化文本(展开制表符、对齐字符、断行等)。 要指定其他格式选项,请使用DrawTextEx函数


在这里您可以找到一个很好的使用方法

看看
TextOut
的定义:

procedure TextOut(X, Y: Integer; const Text: string); override;
帮助中的描述是:

在画布上写入字符串,从点(X,Y)开始

因此,修改代码以在更靠近矩形左边框(而不是右边框)的X坐标处绘制文本。例如:

TextOut(round(cx + 215), cy-50, Name);
输出距离矩形左边框5像素的文本

TextOut(round(cx + 55), cy-50, Name);

顺便说一句,假设
cx
是一个整数,您不需要使用
Round()

请不要将代码作为图像发布。只需将代码粘贴到问题中,标记代码并按ctrl-k。停止向cx添加215(这会将其向右推)。另外,停止从cy中减去50。如果理解函数或方法的使用的第一步是阅读文档,这样你就知道你要传递的参数是什么,这也会有所帮助。我在Canvash中创建表时遇到问题,我想是的。请更详细地解释您的问题。在最新版本的Delphi中,VCL中的
TCanvas
有一个重载方法,该方法包装
DrawText()
,并将其标志公开为
TextFormat
参数。