Delphi 7 中文本/标题的宽度(以像素为单位)
-
21-09-2019 - |
题
这是我的问题,我想知道文本的实际长度(以像素为单位)(请注意,某些字体中的各种字母具有不同的长度)。我将使用它来更好地调整 DBGrid 中的列宽。
解决方案
您可以使用 Canvas.TextWidth
和 Canvas.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串的长度
不隶属于 StackOverflow