VCLでは、WindowsのDrawText APIを使ってCanvasに文字を描画できました。
procedure TForm1.FormPaint(Sender: TObject);
const
Text = 'こんにちは、世界';
var
R: TRect;
begin
R := TRect.Create(0, 0, 100, 100);
Self.Canvas.FillRect(R);
DrawText(Self.Canvas.Handle, PChar(Text), Length(Text), R,
DT_VCENTER Or DT_SINGLELINE or DT_CENTER);
end;
FireMonkeyでは、Canvasに文字を描画するにはTTextLayoutを使用します。
uses
FMX.TextLayout;
procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas;
const [Ref] ARect: TRectF);
const
Text = 'こんにちは、世界';
var
Layout: TTextLayout;
begin
Layout := TTextLayoutManager.DefaultTextLayout.Create;
try
Layout.BeginUpdate;
Layout.TopLeft := TPointF.Create(0, 0);
Layout.MaxSize := TPointF.Create(Self.Width, Self.Height);
Layout.Font.Size := 30;
Layout.Color := TAlphaColorRec.Brown;
Layout.WordWrap := False;
Layout.HorizontalAlign := TTextAlign.Center;
Layout.VerticalAlign := TTextAlign.Center;
Layout.Text := Text;
Layout.EndUpdate;
Layout.RenderLayout(Canvas);
finally
Layout.Free;
end;
end;