CreateFont詳細解釋



 CFont * f;
   f = new CFont;
   f->CreateFont(10, // nHeight
        0, // nWidth
        0, // nEscapement
        0, // nOrientation
        FW_BOLD, // nWeight
        FALSE, // bItalic
        FALSE, // bUnderline
        0, // cStrikeOut
        ANSI_CHARSET, // nCharSet
        OUT_DEFAULT_PRECIS, // nOutPrecision
        CLIP_DEFAULT_PRECIS, // nClipPrecision
                          DEFAULT_QUALITY, // nQuality
           DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
           _T("Arial")); // lpszFac

 

 

cHeight是字體的高度。
cWidth是字體的寬度。
cEscapement是字體的傾斜角。
cOrientation是字體的傾斜角。
cWeight是字體的粗細。
bItalic是字體是否斜體。


bUnderline是字體是否有下划線。
bStrikeOut是字體是否有刪除線。


iCharSet是字體使用的字符集。
iOutPrecision是指定怎樣選擇合適的字體。


iClipPrecision是用來確定裁剪的精度。
iQuality是怎么樣跟選擇的字體相符合。
iPitchAndFamily是間距標志和屬性標志。
pszFaceName是字體的名稱。

 


函數功能:該函數創建一種有特殊性的邏輯字體。此邏輯字體能夠在后面被不論什么設備選擇。

    函數原型:HFONT CreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwltalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD

fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace)。

    參數:

    nHeight:指定字體的字符單元或字符的邏輯單位高度。字符的高度值(也被稱為em高度)是指字符單元高度值減去內部標頭值。字體映射器以例如以下方式解釋nHeight指定的值,各值含義

為:

    >0:字體映射器轉換這個值以設備單位,並和已有字體的單元高度相匹配。

    0:字體映射器轉換在選擇匹配時用一個缺省的高度值。

    <0:字體映射器轉換這個值到設備單位,並將它的絕對值和已有字體的字符高度相匹配。

    比較全部的高度,字體映射器選擇不超過要求大小的最大字體。

    此映射當字體第一次被使用時發生。

    對於MM_TEXT映射方式,能夠用以下的公式為一種指定了點大小的字體確定高度:

    nHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY),72)

    nWidth:指定所要求字體的字符的邏輯單位的平均寬度。假設此值為0,字體映射器選擇一個closest match值。closest match值是由比較當前設備的特征系數與可使用字體的數字化特征

系數之差的絕對值而確定的。

    nEscapement:指定移位向量和設備X軸之間的一個角度。以十分之中的一個度為單位。

移位向量平行於正文行的基線。

    Windows NT:當圖形設備設置為GM_ADVANCED時。能夠不依賴字符串的字符的定位角而指定字符串的移位角。

    當圖形模式被設置為GM_COMPATIBLE時,nEscapement同一時候指定移位角和定位角,能夠設置nEscapement和nOrientation為同樣的值。

    Windows 95:nEscapement同一時候指定移位角和定位角,可設置nEscapement和nOrientation為同樣的值。

    nOrientation:指定每一個字符的基線和設備X軸之間的角度。

    FnWeight:在0到1000之間指定字體的權值。如400表示標准體,700表示黑(粗)體。假設此值為0,則使用缺省的權值。

    為方便定義,可使用例如以下值:

    FW_DONTCARE:0;FW_THIN;100;FW_EXTRALIGHT;200;FW_ULTRALIGHT;200;FW_LIGHT。300;

    FW_NORMAL:400;FW_REGULAR;400。FW_MEDIUM。500;FW_SEMIBOLD;600;FW_DEMIBOLD;600。

    FW_BOLD:700;FW_EXTRABOLD。800;FW_ULTRABOLD;800;FW_HEAVY;900;FW_BLACK;900。

    fdwItalic:假設設置為TRUE則指定斜體。

    fdwUnderline:假設設置為TRUE,則指定加下划線的字全。

    fdwStrikeOut:假設設置為TRUE,則strikeout指定字體。

    fdwCharSet:指定字符集。下列值是提前定義的:

    ANSI_CHARSET; BALTIC_CHARSET; CHINESEBIG5_CHARSET; DEFAULT_CHARSET;

    EASTEUROPE_CHARSET; GB2312_CHARSET; GREEK_CHARSET; HANGUL_CHARSET; MAC_CHARSET; OEM_CHARSET; RUSSIAN_CHARSET; SHIFTJIS_CHARSET;

    SYMBOL_CHARSET; TURKISH_CHARSET。

    韓國Windows:JOHAB_CHARSET;

    中東地區Windows:HEBREW_CHARSSET; ARABIC_CHARSET

    泰國Windows:THAI_CHARSET

    OEM_CHARSET指定的字符集與操作系統有關。

    能夠使用DEFAULT_CHARSET值來同意字體的名字和大小來充分描寫敘述邏輯字體。

假設指定的字體名不存在,不論什么字符集的字體都能夠替代指定的字體。所以應該小心地用

DEFAULT_CHARSET來避免不期望的結果出現。

    操作系統中存在其它字符集的字體。假設一個應用程序用一種未知字符集的字體,則應用程序不會試圖去翻譯或解釋用那種字體寫出來的字符串。

    在字體映射過程中此參數非常重要。為確保獲得一致的結果。指定一個特殊的字符集。

假設在lpszFace參數中指定了一個字體名。確定fdwCharSet值與由lpszFace指定的字體字符集是否匹

配。

    fdwOutputPrecision:指定輸出精度,輸出精度義輸出與要求的字體高度、寬度、字符定位、移位、字符間距和字符類型的匹配程序。它可取下列值之中的一個:

    OUT_CHARACTER_PRECIS。未用。

    OUT_DEFAULT_PRECIS:指定缺省的字體映射器狀態。

    OUT_DEVICE_PRECIS:指示字體映射器在當系統里有多種字體使用同一個字體使用同一個名字時選擇一種設備字體。

    OUT_OUTLINE_PRCIS:在Windows NT中此值指示字體映射器從TrueType和其它基於邊框的字體中選擇。

    OUT_RASTER_PRECIS:指示字體映射器在當系統里有多種字體使用同一個名字時選擇一種光柵字體。

    OUT_STRING_PRECIS:此值沒有被字全映射器使用。可是當掃描字體被列舉時作為返回值。

    OUT_STROKE_PRECIS:在Windows NT中此值沒有被字體映射器使用。可是當TrueType字體、其它基於邊框的字體和向量字體被列舉時,作為返回值。

    Windows 95:此值沒有被字體映射器使用。可是當TrueType字體或向量字體被列舉時,作為返回值。

    OUT_TT_ONLY_PRECIS:指示字體映射器僅從TrueType字體中選擇,假設系統中沒有安裝TrueType字體,則字體映射返回缺省狀態。、

    OUT_TT_PRECIS:指示字體映射器在當系統里有多種同名的字體時選擇一種TrueType字體。

    當操作系統含有多種與指定名字同名的字體時。應用程序能夠使用OUT_DEVICE_PRECIS,OUT_RASTER_PRECIS和OUT_TT_PRECIS值來控制字體映射器怎樣選擇一種字體,比如。

假設操作系統含有名字Symbol的光柵和TrueType兩種字體,指定OUT_TT_PRECIS使字體映射器選擇TrueType方式。

指定OUT_TT_ONLY_PRECIS使字體映射器選擇一種TrueType字體。

雖然這會給TrueType字體換一個名字。

    fdwClipPrecision;指定裁剪精度。裁剪精度定義怎樣裁剪部分超出裁剪區的字符。它可取一個或多個下列值:

    CLIP_DEFAULT_PRECIS:指定缺省裁剪狀態。

CLIP_CHARACTER_PRECIS:未用。

    CLIP_STROKE_PRECIS:未被字體映射器使用。可是當光柵字體、向量字體或TrueType字體被列舉時作為返回值。

在Windows環境下。為保證兼容性,當列舉字體時這個值總被返回。

    CLIP_MASK:未用。

CLIP_EMBEDDED:要使用嵌入式僅僅讀字體必須使用此標志。

    CLIP_LH_ANGLES:當此值被使用時。全部字體的旋轉依賴於坐標系統的定位是朝左的還是朝右的。

    假設未使用此值,設備字體總是逆時針方向旋轉。但其它字體的旋轉依賴於坐標系統的定向。要得到很多其它關於坐標系統定向的信息。參見參數orientation。

    CLIP_TT_ALWAYS:未用。

    fdwQuality:指向輸出質量。輸出質量定義GDI怎樣細致地將邏輯字體屬性與實際物理字體屬性相匹配。它可取下列值之中的一個:

    DEFAULT_QUALITY:字體的外觀不重要。

    DRAFT_QUALITY:字體外觀的重要性次於使用PROOF_QUALITY時。對GDI光柵字體。縮放比例是活動的,這意味着多種字體大小可供選擇,但質量可能不高,假設有必要。粗體、斜體

、下划線、strikeout字體可被綜合起來使用。

    PROOF_QUALITY:字符質量比精確匹配邏輯字體字體屬性更重要。對GDI掃描字體,縮放比例是活動的。並選擇最接近的大小。雖然當使用PROOF_QUALITY時,選擇字體大小並不完

全匹配。但字體的質量非常高,並沒有外觀上的變形。假設有必要,粗體、斜體、下划線、strikeout字體可被綜合起來使用。

    fdwPitchAndFamily:指定字體間距和字體族,低端二位指定字體的字符間距,它可取下列值之中的一個:

    DEFAULT_PITCH;FIXED_PITCH; VARIABLE_PITCH

    高端四位指定字體族,可取下列值之中的一個:

    FF_DECORATIVE:新鮮的字體。如老式英語(Old English)。FF_DONTCARE:不關心或不知道。

    FF_MDERN:筆划寬度固定的字體,有或者無襯線。如Pica、Elite和Courier New。

    FF_ROMAN:筆划寬度變動的字體,有襯線。如MS Serif。

    FF_SCRIPT:設計成看上去象手寫體的字體。如Script和Cursive。

    FF_SWISS:筆划寬度變動的字體,無斜線。如MS Sans Serif。

    應用程序能夠用運算符OR將字符間距和字體族組合起來給fdwPitchAndFamily賦值。

    字體族描寫敘述一種字體的普通外觀,當全部的精確字樣都不能使用時,可用它們來指定字體。

    lpszface:指向指定字體的字樣名的、以/0結束的字符串指針,字符串的長度不能超過32個字符(包含字符/0)。函數EnumFontFamilies可用來列舉全部當前可用字體的字樣名。

    假設lpszFace為NULL或指向一個空串,GDI使用能匹配其它屬性的第一種字體。

    返回值:假設函數調用成功,返回值是一種邏輯字體句柄。假設函數調用失敗,返回值為NULL。

    Windows NT:若想獲得很多其它錯誤信息,請調用GetLastError函數。

    備注:當一種字體不再使用時。可用DeleteObject來刪除。

    為保護那些提供字體給Windows和Windows NT的賣主的版權,基於Win32的應用程序總是列出所選擇字體的准確名字。因為不同的系統會使用不同的字體,不要覺得所選擇字體就是要

求的字體。比如。假設要求名叫Palatino的字體,但系統沒提供那樣一種字體。則字體映射器將會以一種不同名但有類似屬性的字體取代替。該系統將始終報告用戶選擇的字體名稱出。

    快速搜索:Windows NT:3.1以上數字;Windows:95以上數字。Windows CE:不支持。頭:wingdi.h;庫文件:gdi32.lib;Unicode:在Windows NT環境,Unicode和ANSI

兩種方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM