当前在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;

最佳答案

您可以为此使用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;

10-08 04:48