【问题标题】:How to draw text on a canvas with left alignment?如何在左对齐的画布上绘制文本?
【发布时间】:2016-06-29 07:33:55
【问题描述】:

我想在画布上绘制一个矩形,并用文本填充它。我试过下面的代码,但它只成功了右对齐。

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

{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);`

【问题讨论】:

  • 请不要将代码发布为图片。只需将代码粘贴到问题中,标记代码并按 ctrl-k。
  • 停止将 215 添加到 cx (将其推到右侧)。也停止从 cy 中减去 50。如果您了解函数或方法的使用的第一步是阅读文档,这也会有所帮助,这样您就可以知道要传递的参数是什么。
  • 我在画布中创建表格时遇到问题

标签: delphi shape delphi-2010


【解决方案1】:

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()

【讨论】:

  • 哦,我以为我做到了。请更详细地解释您的问题。
【解决方案2】:

我会使用微软网站here 上解释的 DrawText 函数而不是 textout

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

在这里你找到了一个很棒的example如何使用它

【讨论】:

  • 在最近的 Delphi 版本中,VCL 中的TCanvas 有一个重载的TextRect() 方法,它包装了DrawText() 并将其标志作为TextFormat 参数公开。
猜你喜欢
  • 2016-06-25
  • 2011-12-31
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
  • 2017-07-27
  • 2012-03-04
  • 1970-01-01
相关资源
最近更新 更多