作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一个函数,该函数应将参数作为字体名称、示例字符、宽度、示例字符的高度,并应返回字体大小。
它必须是这样的:
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 12font 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/
我是一名优秀的程序员,十分优秀!