大家好,又見面了,我是你們的朋友全棧君。
文章目錄
- TEXTMETRIC
- 結構體各成員介紹
- 示例
- 折疊示例一
- 折疊示例二
TEXTMETRIC
TEXTMETRIC是在WINGDI.H中定義的型态的結構。
結構體各成員介紹
TEXTMETRIC是在WINGDI.H中定義的型态的結構。
TEXTMETRIC結構有20個欄位:
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;
複制
變量:
BYTE tmPitchAndFamily:
TMPF_FIXED_PITCH
為真表示變長型字型,為假是定長型字型
TMPF_VECTOR
為真表示矢量字型
TMPF_TRUETYPE
為真表示全真字型
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 ;
釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/171004.html原文連結:https://javaforall.cn