日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC字体

發布時間:2023/12/10 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC字体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GDI字體分3類:點陣字體(raster font)、筆畫字體(stroke font)和Truetype字體。

默認點陣字體有7種:

System???????? (用于SYSTEM_FONT)?????? ???? 無襯線??? 西方

??????????????????????????????????????????????????????????? ??? 有襯線??? gb2312

Fixedsys??????? (用于SYSTEM_FIXED_FONT) 有襯線??? gb2312

Terminal??????? (用于OEM_FIXED_FONT)????? ?有襯線??? gb2312

????????????????????????????????????????????????????????? ????? 無襯線? ??OEM/DOS

??????????????????????????????????????????????????????????? ??? 無襯線 ???韓文

Courier????????????????????????????????????????????????? ??? 有襯線??? 西方

MS Serif??????????????????????????????????????????????? ???? 有襯線??? 西方

MS Sans Serif??? (用于DEFAULT_GUI_FONT) 無襯線??? 西方

Small Fonts?????????????????????????????????????????????? ? 無襯線??? 西方

默認筆畫字體有3種:

Modern???????????????????????????????????????????????? ????? 無襯線? ??OEM/DOS

Roman???????????????????????????????????????????????? ? ????有襯線??? OEM/DOS

Script?????? ???????????????????????????????????????? ?????????有襯線??? OEM/DOS

默認TrueType字體有13種:

Courier New?????????????????? Arial

Courier New Bold??????? ??? Arial Bold

Courier New Italic????????? ? Arial Italic

Courier New Bold Italic???? Arial Bold Italic

Times New Roman??? ????? ?Symbol

Times New Roman Bold

Times New Roman Italic

Times New Roman Bold Italic

?

System本身就是粗體,還有粗斜體。

Arial是無襯線,其他12種TrueType字體都是有襯線。

在TrueType字體中可能只有Arial Unicode MS支持東方語言。比如簡體中文、繁體中文、韓文。

?

在范例代碼里面用庫存字體SYSTEM_FIXED_FONT得到的是Fixedsys。而默認的SYSTEM_FONT是System。使用OEM_FIXED_FONT得到的是Terminal。

void CMainWindow::OnPaint()

{

  CPaintDC dc(this);

  dc.SelectStockObject(SYSTEM_FIXED_FONT);

  //dc.SelectStockObject(OEM_FIXED_FONT);

  dc.GetTextFace(strTextFace);

  dc.TextOut(10,10,"SYSTEM_FIXED_FONT");

  //dc.TextOut(10,10,"SYSTEM_FONT");

  //dc.TextOut(10,10,"OEM_FIXED_FONT");

  dc.TextOut(10,30,strTextFace);

?

  dc.GetTextMetrics(&tm);

  //別的代碼

}

    

建立邏輯字體一般用CreateFont函數和CreateFontIndirect函數。這2個函數聲明如下:

BOOL CreateFont(

????????????? int nHeight,

????????????? int nWidth,

????????????? int nEscapement,

????????????? int nOrientation,

????????????? int nWeight,

????????????? BYTE bItalic,

????????????? BYTE bUnderline,

????????????? BYTE cStrikeOut,

????????????? BYTE nCharSet,

????????????? BYTE nOutPrecision,

????????????? BYTE nClipPrecision,

????????????? BYTE nQuality,

????????????? BYTE nPitchAndFamily,

????????????? LPCTSTR lpszFacename

);

typedef struct tagLOGFONT {

?????? LONG lfHeight;

?????? LONG lfWidth;

?????? LONG lfEscapement;

?????? LONG lfOrientation;

?????? LONG lfWeight;

?????? BYTE lfItalic;

?????? BYTE lfUnderline;

?????? BYTE lfStrikeOut;

?????? BYTE lfCharSet;

?????? BYTE lfOutPrecision;

?????? BYTE lfClipPrecision;

?????? BYTE lfQuality;

?????? BYTE lfPitchAndFamily;

?????? TCHAR lfFaceName[LF_FACESIZE];

} LOGFONT, *PLOGFONT;

BOOL CreateFontIndirect(const LOGFONT* lpLogFont);

?

從以上聲明看到CreateFontIndirect函數其實是CreateFont函數的簡化。直接參數轉換成結構。下面用CreateFont函數版本來解釋需要的參數。

nHeight參數“這是以邏輯單位表示希望得到的字符高度。”有3種可能的值:

①大于0。高度被轉換為設備單位。“它和TEXTMETRIC結構的tmHeight字段值近似相等(有時會有微小的不同,那是由于四舍五入帶來的誤差)”。“它表示該高度包含內部間隔tmInternalLeading(但不包含外部間隔tmExternalLeading)”。

②等于0。“默認字符高度”、“使用合理的缺省值”。

③小于0。負數。“它大致等于TEXTMETRIC結構的tmHeight字段減去tmInternalLeading”。“當它為負數時,Windows會將其絕對值作為字體的高度。這是一個很重要的區別:如果想要某一特定字號的字體,應該先把該字號轉換成邏輯單位,然后把nHeight設定為該值的相反數,Windows就會反向查找到你想要的字號。”

下圖介紹tmHeight、tmAscent、tmInternalLeading、tmExternalLeading的含義。

上圖截圖自《Windows程序設計(第5版,珍藏版)》(美)Charles Petzold著。里面的第73頁。

tmExternalLeading并沒有在上圖中。具體可見第776頁的“17.2.5行間距和字間距”這一節。

nWidth參數“這是以邏輯單位表示希望得到的字符寬度。”

nEscapement參數表示字符串水平基線逆時針偏離角度大小。以0.1°為單位。

nOrientation參數表示單個字符水平基線逆時針偏離角度大小。以0.1°為單位。

nWeight表示寬度。大部分都是400。System本身就是黑體,所以是700。

bItalic表示是否是斜體。

bUnderline表示是否有下劃線。

bStrikeOut表示是否有刪除線。

nCharSet表示字符集。

nOutPrecision表示輸出精度。

nClipPrecision表示剪切精度。

nQuality表示字體輸出質量。

nPitchAndFamily表示是否變寬等寬字體和字形集。

lpszFacename表示字樣名稱。

轉載于:https://www.cnblogs.com/sishenzaixian/p/5072926.html

總結

以上是生活随笔為你收集整理的MFC字体的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。