【问题标题】:How to put textout in an area?如何将文本输出放在一个区域中?
【发布时间】:2013-10-19 18:36:56
【问题描述】:

目前在 TGraphicControl 组件中使用 canvas.textout 来显示一些文本,但我需要将文本留在一个区域内。有没有我可以使用的自动换行之类的属性..或设置文本输出区域的方法?像这样

var
  r: TRect
  s: string
begin
  s := 'some long text that takes up about 3-4 lines';
  r.Left := 10;
  r.Top := 10;
  r.Right := 20;
  r.bottom := 50;
  textout(r,s);
end;

【问题讨论】:

    标签: delphi delphi-xe2


    【解决方案1】:

    您可以为此使用DrawText 函数:

    procedure TForm1.FormPaint(Sender: TObject);
    const
      S = 'This is some sample text. It is very long. Very long, indeed.' +
          'Very, very, long.';
    var
      R: TRect;
    begin
      R := Rect(100, 100, 200, 200);
      DrawText(Canvas.Handle, S, length(S), R, DT_WORDBREAK);
    end;
    

    【讨论】:

    • 我想我应该添加,我在 tgraphiccontrol 组件上绘制文本。这还能用吗?
    • @Glen:是的,当然。只需将 Canvas.Handle 替换为您要绘制的实际 HDC。
    • 我建议使用TCanvas.TextRect,它是此 Windows API 函数(或其重载中的 ExtTextOut 函数)的扩展版本的包装器,因为它是 Delphi 原生的。
    • @Tlama,当我尝试这个时,当文本到达 Trect 区域的末尾时,它不会换行到下一行......应该吗?
    • @AndreasRejbrand 同样的事情,它似乎在剪切文本而不是在到达矩形末尾时输入新行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2012-03-22
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多