代码之家  ›  专栏  ›  技术社区  ›  Bharat

如何在delphi中获取字体大小

  •  2
  • Bharat  · 技术社区  · 15 年前

    我正在寻找一个函数,应该采取的参数为字体名称,样本字符,宽度,高度的样本字符,并应返回字体大小。

    一定是这样的:

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

    必须返回字体大小,

    这在德尔福可能吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Community Mohan Dere    8 年前

    我唯一能想到的办法就是建立一个 TCanvas ,并反复呼叫 GetTextExtent 在它上面,每次改变字体大小,直到你得到一个可以接受的接近你想要的大小。

    根据你需要的精确程度,你可以把你想要的像素高度转换成点-一个点是1/72英寸,你的屏幕可能是96像素每英寸(但是检查一下) GetDeviceCaps 得到真实的数字)。看到了吗 this question .

        2
  •  5
  •   Mark Elder    6 年前

    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
    

    Obtaining Font Metrics GetTextMetrics function .

    正如Rob在评论中所说的,通过将Font.Size属性设置为负高度(以像素为单位),可以在特定高度绘制文本。然后,窗口将在该高度绘制文本。在这种情况下,您不需要一个特定的字母或宽度,因为您在您的原型函数。对于给定的字体大小,每个字母都有不同的高度和宽度。也就是说,大写字母比小写字母高,像“W”这样的字母比像“I”这样的字母宽。