Windows程序設計——TEXTMETRIC

TEXTMETRIC

TEXTMETRIC是在WINGDI.H中定義的型態的結構。git

結構體各成員介紹

TEXTMETRIC是在WINGDI.H中定義的型態的結構。windows

TEXTMETRIC結構有20個欄位:markdown

typedef struct tagTEXTMETRIC { // tm

LONG tmHeight; //字符高度TEXTMETRIC結構字段的圖示

LONG tmAscent; //字符上部高度(基線以上)

LONG tmDescent; //字符下部高度(基線如下)

LONG tmInternalLeading, //由tmHeight定義的字符高度的頂部空間數目

LONG tmExternalLeading, //夾在兩行之間的空間數目

LONG tmAveCharWidth, //平均字符寬度

LONG tmMaxCharWidth, //最寬字符的寬度

LONG tmWeight; //字體的粗細輕重程度

LONG tmOverhang, //加入某些拼接字體上的附加高度

LONG tmDigitizedAspectX, //字體設計所針對的設備水平方向

LONG tmDigitizedAspectY, //字體設計所針對的設備垂直方向

BCHAR tmFirstChar; //爲字體定義的第一個字符

BCHAR tmLastChar; //爲字體定義的最後一個字符

BCHAR tmDefaultChar; //字體中所沒有字符的替代字符

BCHAR tmBreakChar; //用於拆字的字符

BYTE tmItalic, //字體爲斜體時非零

BYTE tmUnderlined, //字體爲下劃線時非零

BYTE tmStruckOut, //字體被刪去時非零

BYTE tmPitchAndFamily, //字體間距(低4位)和族(高4位)

BYTE tmCharSet; //字體的字符集

} TEXTMETRIC;

變量:ide

BYTE tmPitchAndFamily:函數

TMPF_FIXED_PITCH字體

爲真表示變長型字體,爲假是定長型字體atom

TMPF_VECTORspa

爲真表示矢量字體設計

TMPF_TRUETYPEcode

爲真表示全真字體

TMPF_DEVICE

爲真表示設備字體。.

TEXTMETRIC類型的變量用於存儲裝置字體結構信息(上述變量),在窗口中輸出文字時須要用到上述變量。

示例

摺疊示例一

要得到TEXTMETRIC類型變量的值在windows SDK中能夠用GetTextMetrics(HDC,LPTEXTMETRIC)函數;在MFC中能夠用GetTextMetrics(&tm)。

運用例子以下:

運用Windows SDK的狀況:

TEXTMETRIC tm;

GetTextMetrics(hdc,&tm);

運用MFC 的使用狀況:

TEXTMETRIC tm;

CDC::GetTextMetrics(&tm);

摺疊示例二

下面是取得系統字體的字符寬度和高度的WM_CREATE程序代碼:

case WM_CREATE:

hdc = GetDC (hwnd) ;

GetTextMetrics (hdc, &tm) ;

cxChar = tm.tmAveCharWidth ;

cyChar = tm.tmHeight + tm.tmExternalLeading ;

ReleaseDC (hwnd, hdc) ;

return 0 ;

其中cxChar、cyChar、cxCaps都是在回調函數中定義的static int類型的變量。對於固定寬度的字體, cxCaps等於cxChar。對於可變寬度字體,cxCaps設定爲cxChar乘以150%。對於可變寬度字體,TEXTMETRIC結構中的tmPitchAndFamily字段的低位爲1,對於固定寬度字體,該值爲0。

示例二中使用這個位從cxChar計算cxCaps: cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;

相關文章
相關標籤/搜索