如何获得String的像素宽度和高度?

Lit*_*per 1 delphi text canvas delphi-7

如何在Delphi 7中使用GetTextExtentPoint32W在输出之前获取宽字符串的像素宽度和高度?

And*_*and 9

你可以做

procedure TForm1.FormPaint(Sender: TObject);
var
  extent: TSize;
  S: WideString;
begin
  S := 'This is the integral sign: '#$222b;
  if not GetTextExtentPoint32W(Canvas.Handle, PWideChar(S), length(S), extent) then
    RaiseLastOSError;
  TextOutW(Canvas.Handle, (Width - extent.cx) div 2, (Height - extent.cy) div 2,
    PWideChar(S), length(S));
end;
Run Code Online (Sandbox Code Playgroud)

GetTextExtentPoint32W将放置的宽度和高度在extent.cxextent.cy分别.

然后,最后一行将用于TextOutW在客户区域上水平和垂直绘制居中的字符串.