正在阅读:Windows API-GDI入门基础知识详解(2)Windows API-GDI入门基础知识详解(2)

2005-06-30 10:06 出处:PConline 作者:管宁 责任编辑:xietaoming

BOOL GetTextMetrics(

  HDC hdc,              // 当前的设备描述表句柄

  LPTEXTMETRIC lptm   // 指向TEXTMETRICS结构对象的指针

);

  GetTextMetrics函数利用当前选择字体的各种度量值来填充由lptm参数所指向的缓冲区,函数如果运行成功则返回TURE,失败则返回FALSE。

  TEXTMETRIC结构定义在WinGdi.h头文件中。

  结构如下:

typedef struct tagTEXTMETRICA

{

    LONG        tmHeight;

    LONG        tmAscent;

    LONG        tmDescent;

    LONG        tmInternalLeading;

    LONG        tmExternalLeading;

    LONG        tmAveCharWidth;

    LONG        tmMaxCharWidth;

    LONG        tmWeight;

    LONG        tmOverhang;

    LONG        tmDigitizedAspectX;

    LONG        tmDigitizedAspectY;

    BYTE         tmFirstChar;

    BYTE        tmLastChar;

    BYTE        tmDefaultChar;

    BYTE        tmBreakChar;

    BYTE        tmItalic;

    BYTE        tmUnderlined;

    BYTE        tmStruckOut;

    BYTE        tmPitchAndFamily;

    BYTE        tmCharSet;

} TEXTMETRICA, *PTEXTMETRICA, NEAR *NPTEXTMETRICA, FAR *LPTEXTMETRICA;

typedef struct tagTEXTMETRICW

{

    LONG        tmHeight;

    LONG        tmAscent;

    LONG        tmDescent;

    LONG        tmInternalLeading;

    LONG        tmExternalLeading;

    LONG        tmAveCharWidth;

    LONG        tmMaxCharWidth;

    LONG        tmWeight;

    LONG        tmOverhang;

    LONG        tmDigitizedAspectX;

    LONG        tmDigitizedAspectY;

    WCHAR      tmFirstChar;

    WCHAR      tmLastChar;

    WCHAR      tmDefaultChar;

    WCHAR      tmBreakChar;

    BYTE        tmItalic;

    BYTE        tmUnderlined;

    BYTE        tmStruckOut;

    BYTE        tmPitchAndFamily;

    BYTE        tmCharSet;

} TEXTMETRICW, *PTEXTMETRICW, NEAR *NPTEXTMETRICW, FAR *LPTEXTMETRICW;

  该结构拥有大约20个属性,这些属性的值的单位取决于设备描述表的映射方式,默认情况下是MM_TEXT,对于TextOut输出来说我们只需要用到前7个,他们的单位是像素。

LONG        tmHeight;           // 字符基准线上下最大纵向高度,是tmAscenttmDescent之和。

LONG        tmAscent;       // 字符基准线以上所占的高度。

LONG        tmDescent;          // 字符基准线以下所占的高度。

LONG        tmInternalLeading;   // 内部间距,也是重音符号出现的地方。

LONG        tmExternalLeading;  // 行距

LONG        tmAveCharWidth;    // 小写字母的加权平均宽度,对于大写字母来说可以用小写字母的加权平均宽度乘以150%计算出来。

LONG        tmMaxCharWidth;    // 字符中字宽字符的宽度。

  字符的纵向大小是由TEXTMETRIC结构的前五个属性决定的。

  具体情况见下图:

  字体的大小是取决于当前屏幕的分辨率或是所选字体本身的默认大小的,在编写应用程序的时候不要把字体的大小以猜想的方式固定了,因为字体的大小是可变化的,利用GetTextMetrics函数动态的获取它们才是正确的。

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品