小编Sna*_*hmo的帖子

GetTextExtentPoint32 的结果不随 nHeight 线性缩放

我编写了一个 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)

winapi vba

5
推荐指数
0
解决办法
884
查看次数

标签 统计

vba ×1

winapi ×1