Delphi7 Canvas.TextOut无法编写新行

SmR*_*Guy 0 delphi newline delphi-7

我试图用新行替换所有"#"来绘制:

Canvas.TextOut(0,0,''+StringReplace('a#b','#',#13#10,[rfReplaceAll]));
Run Code Online (Sandbox Code Playgroud)

但没什么.
TextOut打印"a#b"就像被替换的部分甚至不存在(但它确实存在):ab
而不是这样:

a
b
Run Code Online (Sandbox Code Playgroud)

#13#10是新行(Windows)对吗?
那为什么这不起作用?

谢谢.

Dav*_*nan 7

您需要使用它DrawText来生成多行文本:

var
  R: TRect;
....
R := Rect(0, 0, Width, Height);
DrawText(
  Canvas.Handle,
  PChar(StringReplace('a#b','#',#13#10,[rfReplaceAll])),
  -1,
  R,
  0
);
Run Code Online (Sandbox Code Playgroud)

您可能希望在最终参数中使用不同的标志,但我确信您可以阅读文档并找出您需要的内容.