gpt4 book ai didi

delphi - 如何在 Graphics32 中检索 RenderText 的准确文本宽度

转载 作者:行者123 更新时间:2023-12-02 08:56:31 24 4
gpt4 key购买 nike

我认为我的问题已经足够清楚了,但我解释得更多。简而言之,当我们在 RenderText 过程中使用 AntiAlias 时,TextWidth 函数中获取的值不正确。我该怎么做才能获得正确的文本宽度?

最佳答案

你可以在他们自己的代码中查找算法。他们还必须计算它。不管怎样,我就是这么做的。

function TGR32Canvas.TextWidth(const Text: string): Integer;
var
TempFont: TFont;
TempWidth: Integer;
begin
if Text <> '' then
begin
TempFont := TFont.Create;
try
TempFont.Assign(Font);
TempFont.Size := Font.Size shl AA_MODE;
TempWidth := GetTextWidth(Text, TempFont);
finally
TempFont.Free;
end;
end
else
TempWidth := 0;

TempWidth := (TempWidth shr AA_MODE + 1) shl AA_MODE;
Result := TempWidth shr AA_MODE;
end;

GetTextWidth 函数很简单。您可以采用不同的方式。

function GetTextWidth(const Text: string; const Font: TFont): Integer;
var
Canvas: TCanvas;
begin
Canvas := TCanvas.Create;
try
Canvas.Handle := GetDC(0);
try
Canvas.Font.Assign(Font);
Result := Canvas.TextWidth(Text);
finally
ReleaseDC(0, Canvas.Handle);
end;
finally
Canvas.Free;
end;
end;

关于delphi - 如何在 Graphics32 中检索 RenderText 的准确文本宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4492857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com