wglUseFontOutlinesA 函式 (wingdi.h)
wglUseFontOutlines 函式會建立一組顯示清單,其中一個用於裝置內容目前選取大綱字型的每個字元,以便與目前的轉譯內容搭配使用。 顯示清單用來繪製 TrueType 字型的 3D 字元。 每個顯示清單都會描述浮點座標的圖像外框。
字元的執行是以指定裝置內容字型的firstglyph 開頭。 字型的 em 平方大小、要從中安裝字型的原始字型外框的指標網格線大小,會對應至顯示清單中的 x 和 Y 座標中的 1.0。 立體化參數會設定字型在 z 方向的深度。
lpgmfparameter 會傳回 GLYPHMETRICSFLOAT 結構,其中包含字元單元格中每個字元的位置和方向相關信息。
語法
BOOL wglUseFontOutlinesA(
HDC unnamedParam1,
DWORD unnamedParam2,
DWORD unnamedParam3,
DWORD unnamedParam4,
FLOAT unnamedParam5,
FLOAT unnamedParam6,
int unnamedParam7,
LPGLYPHMETRICSFLOAT unnamedParam8
);
參數
unnamedParam1
指定具有所需外框字型的裝置內容。 hdc 的外框字型可用來在目前的轉譯內容中建立顯示清單。
unnamedParam2
指定形成字型外框顯示清單的第一組字元。
unnamedParam3
指定用來形成字型外框顯示清單的字元集內的字元數目。 wglUseFontOutlines 函式會建立 計數 顯示清單,一組字元中每個圖像的一個顯示清單。
unnamedParam4
指定開始顯示清單。
unnamedParam5
指定原始外框的最大和弦偏差。 當偏差為零時,和弦偏差相當於原始字型的一個設計單位。 偏差 的值必須等於或大於 0。
unnamedParam6
指定以負 z 方向立體化字型。 值必須等於或大於 0。 當 立體化 為 0 時,顯示清單不會立體化。
unnamedParam7
指定要在顯示清單中使用的格式,WGL_FONT_LINES或WGL_FONT_POLYGONS。 當 格式 WGL_FONT_LINES 時,wglUseFontOutlines 函式會建立具有行段的字型。 當 格式 WGL_FONT_POLYGONS 時,wglUseFontOutlines 會使用多邊形建立字型。
unnamedParam8
指向 計數陣列,GLYPHMETRICSFLOAT 結構,該結構會接收圖像的計量。 lpgmfNULL時,不會傳回字元計量。
傳回值
函式成功時,傳回值會 TRUE。
當函式失敗時,傳回值會 FALSE,而且不會產生任何顯示清單。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
言論
wglUseFontOutlines 函式會定義大綱字型的字元,並在目前的轉譯內容中顯示清單。 wglUseFontOutlines 函式僅適用於 TrueType 字型;不支援筆劃和點陣字型。
每個顯示清單都包含線條區段或多邊形,且具有從 listBase 編號開始的唯一識別編號。
wglUseFontOutlines 函式會藉由將外框的二次曲線二次曲線細分為線段,以近似字元外框,直到大綱與插補中間點之間的距離在 偏差所指定的值內。 這是 格式 WGL_FONT_LINES 時所使用的最終格式。 當您指定WGL_FONT_OUTLINES時,所建立的顯示清單不包含任何常態;因此,光源無法正常運作。 若要取得正確的線條光源,請使用WGL_FONT_POLYGONS並設定 glPolygonMode(GL_FRONT,GL_LINE )。 當您將 格式 指定為WGL_FONT_POLYGONS外框會進一步鑲嵌成個別的三角形、三角形風扇、三角形帶或四邊帶,以建立每個圖像的表面。 使用 WGL_FONT_POLYGONS,建立的顯示列表會呼叫 glFrontFace
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
GLYPHMETRICSFLOAT 結構包含字元儲存格中每個字元的位置和方向的相關信息。 lpgmf 參數是一個 GLYPHMETRICSFLOAT 結構數位,其中包含字型的整組字元。 每個顯示清單的結尾都是使用對應之 GLYPHMETRICSFLOAT 結構之 gmfCellIncY 和 gmfCellIncY 成員所指定的翻譯。 此轉譯可透過單一呼叫 glCallLists ,在自然方向繪製連續字元。
例子
下列程式代碼範例示範如何使用 wglUseFontOutlines繪製文字。
HDC hdc; // A TrueType font has already been selected
HGLRC hglrc;
GLYPHMETRICSFLOAT agmf[256];
// Make hglrc the calling thread's current rendering context
wglMakeCurrent(hdc, hglrc);
// create display lists for glyphs 0 through 255 with 0.1 extrusion
// and default deviation. The display list numbering starts at 1000
// (it could be any number)
wglUseFontOutlines(hdc, 0, 255, 1000, 0.0f, 0.1f,
WGL_FONT_POLYGONS, &agmf);
// Set up transformation to draw the string
glLoadIdentity();
glTranslate(0.0f, 0.0f, -5.0f)
glScalef(2.0f, 2.0f, 2.0f);
// Display a string
glListBase(1000); // Indicates the start of display lists for the glyphs
// Draw the characters in a string
glCallLists(24, GL_UNSIGNED_BYTE, "Hello Windows OpenGL World.");
注意
wingdi.h 標頭會根據 UNICODE 預處理器常數的定義,將 wglUseFontOutlines 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | wingdi.h |
連結庫 | Opengl32.lib |
DLL | Opengl32.dll |
另請參閱
在 Windows 上