天天看點

《windows程式設計》_windows視窗程式設計TEXTMETRIC示例

大家好,又見面了,我是你們的朋友全棧君。

文章目錄

  • 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