我编写了一个 VBA 函数,以 300dpi 的给定字体和磅值返回字符串的宽度。我不是一个很有经验的程序员,这是我第一次使用 Windows API。我希望宽度会随着字体大小逐渐减小,但并不是那么渐进。
例如:
点大小 = 返回的宽度(Arial 字体中的字符串“文本”)
14 = 99
13.5 = 95
13 = 91
12.5 = 90
12 = 84
11.5 = 83
11 = 75
因此,将字体大小减小 0.5 会将宽度更改为 4>4>1>6>1>8。我想了解为什么字体大小和返回宽度之间存在非线性关系。我知道字体渲染有些模糊,但我猜这不是故事的全部,尤其是在 300dpi 时?
就像我说的,我是一个不可─相当-novice可以随意说“谷歌[关键词],擦洗!”
上下文:与 GetTextExtent 的大多数用途不同,没有我想要适应的对象。最终目标是返回在以 300dpi 以字体 F 打印时 X 点处的字符串 A 是否比 Y 点处的字符串 B 宽的函数。
这是我的代码折叠为一个功能...
Option Explicit
Private Declare PtrSafe Function CreateDC Lib "gdi32.dll" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As …Run Code Online (Sandbox Code Playgroud)