这是我的问题,我想知道文本的实际长度(以像素为单位)(请注意,某些字体中的各种字母具有不同的长度)。我将使用它来更好地调整 DBGrid 中的列宽。

有帮助吗?

解决方案

您可以使用 Canvas.TextWidthCanvas.TextHeight 功能。

选项1、使用控件的canvas

WidthInPixels := Label1.Canvas.TextWidth('My Text');

选项 2,创建临时画布(使用 Tbitmap)

Function GetWidthText(const Text:String; Font:TFont) : Integer;
var 
  LBmp: TBitmap; 
begin
  LBmp := TBitmap.Create;
  try
   LBmp.Canvas.Font := Font;
   Result := LBmp.Canvas.TextWidth(Text); 
  finally
   LBmp.Free;
  end;
end;

其他提示

如果你有Delphi组件具有“画布”属性,则可以使用Component.Canvas.TextWidth。例如:得到的DBGrid的文本可以使用的宽度:

DBGrid1.Canvas.TextWidth('Stack'); 

在这里,你可以找到这个问题的完整参考: 以像素为单位的Delphi串的长度

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top