delphi - 如何在delphi中获取字体大小

标签 delphi fonts delphi-2007 font-size

我正在寻找一个函数,该函数应将参数作为字体名称、示例字符、宽度、示例字符的高度,并应返回字体大小。

它必须是这样的:

    GetFontSize(<Font Name>, <Sample Character>, <Sample Character Width>,
                <Sample Character Height>)

它必须返回字体大小,

这在 delphi 中可行吗?

最佳答案

您可能想看看这个讨论 font size and points 的页面.

它使用以下方法在点和像素大小之间进行转换:

Arial 12pt at 96 dpi:

                      font size in points             12
font size in pixels = ------------------- × 96 dpi = ---- × 96 = 16 pixels
                      72 points per inch              72

您可以将其用于转化。正如 Blorgbeard 所述,您只需要了解屏幕 dpi 可能存在的差异。点通常用来描述纸上的大小。您需要决定如何将其映射到屏幕。例如,许多程序将允许您设置缩放级别。这不会改变纸张上的打印尺寸,但会影响屏幕上的像素高度。

根据您要完成的任务,您可能需要获取字体的实际大小。如果您想确切了解字体是如何组合在一起的,请查看 Obtaining Font Metrics。该页面上的代码使用 .Net 库,但它有很好的解释。如果您想在 Delphi 中获取文本指标,您可以使用 GetTextMetrics function .

正如 Rob 在他的评论中所述,您可以通过将 Font.Size 属性设置为以像素为单位的负高度来绘制特定高度的文本。然后 Windows 将在该高度绘制文本。在那种情况下,您不需要像原型(prototype)函数中那样的特定字母或宽度。对于给定的字体大小,每个字母将具有不同的高度和宽度。 IE。大写字母会比小写字母高,“W”等字母会比“i”等字母宽。

关于delphi - 如何在delphi中获取字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2927997/

相关文章:

Delphi Indy 验证服务器证书 SSL

delphi - 如何使用 FormatDateTime 返回与当前年份连接的默认日期?

ios - 如何获得符合辅助功能设置的等宽字体

delphi - 如何使用 DevExpress LayoutControl 的 minWidth、minHeight?

delphi - Indy 10 TCP Client Server - 测试开放通信 channel

macos - Delphi - 将字符串从 UTF-8 转换回来

java - java中字符串的字体设置

c# - 来自程序集的 WPF 自定义 FontFamily?

delphi - 阻止 VCL 子控件继承父弹出菜单

Windows 7 中的 Delphi VCL "TaskDialog"问题