Delphi 7中文本/标题的像素宽度

Posted

技术标签:

【中文标题】Delphi 7中文本/标题的像素宽度【英文标题】:Width in pixels of a text/caption in Delphi 7 【发布时间】:2010-12-06 14:07:55 【问题描述】:

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

【问题讨论】:

【参考方案1】:

您可以使用Canvas.TextWidthCanvas.TextHeight 函数。

选项1,使用控件的画布

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;

【讨论】:

【参考方案2】:

如果你有一个 Delphi 组件有一个“Canvas”属性,那么你可以使用 Component.Canvas.TextWidth。例如:要获取 DBGrid 文本的宽度,您可以使用:

DBGrid1.Canvas.TextWidth('Stack'); 

您可以在此处找到有关此问题的完整参考: Length of Delphi string in pixels

【讨论】:

以上是关于Delphi 7中文本/标题的像素宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何为css中的文本设置特定的像素或字符宽度限制

通过更改容器的宽度来对齐文本

如何根据宽度有限的文本更改 UILabel 大小

如何修复 CSS 中文本的宽度? [复制]

如何计算 JavaFX 中字符串的像素宽度?

NSString 文本像素长度