使用Delphi在画布上绘制每行一个焦点的居中和中间文本

时间:2014-03-02 13:56:19

标签: delphi text canvas

我需要在框的中心绘制文字。必须水平对齐文本,每行都有一个字符。

我附上了一个字符串“class”的例子。

enter image description here

我可以绘制单个字符,但我希望有更快的方法来实现它。

1 个答案:

答案 0 :(得分:7)

procedure DrawVert(Canvas: TCanvas; Box: TRect; const Text: string);
var
  i: Integer;
  s: string;
  R: TRect;
begin
  s := '';
  for i := 1 to Length(Text) do
    s := s + Text[i] + ' ';
  R := Rect(0, 0, 1, 0);
  Canvas.TextRect(R, s, [tfCalcRect, tfNoClip, tfWordBreak]);
  Box.Left := Box.Left + (Box.Right - Box.Left - R.Right) div 2;
  Box.Top := Box.Top + (Box.Bottom - Box.Top - R.Bottom) div 2;
  Box.Right := Box.Left + R.Right;
  Box.Bottom := Box.Top + R.Bottom;
  Canvas.TextRect(Box, s, [tfWordBreak]);
end;

为了测试,让PaintBox1是我们正在绘制的框

procedure TForm1.Button1Click(Sender: TObject);
begin
  DrawVert(PaintBox1.Canvas, PaintBox1.Canvas.ClipRect, 'CLASS TEST');
end;