2012-10-14 34 views
1

當我通過Win32 API的DrawText函數繪製文本有沒有一種方法可以確定使用哪種字體,或確定字體大小,還是粗體或斜體?
PS我寫在C#在DrawText中設置格式win32函數

+3

'DrawText()'將在您傳遞的設備上下文中使用當前選定的字體。你必須創建適當的'HFONT'並使用'SelectObject()'將它與你的'HDC'關聯(並且保存返回的句柄以便在完成時恢復它),這可能很乏味。您是否有任何理由使用Win32而不是託管API? –

+0

winForms的DrawString用於字體大小的點,我想用於小型單位。 – user1544067

回答

6

作爲MSDN says

DrawText函數使用設備上下文的選擇字體,文本顏色和背景顏色繪製文本。

這意味着您可以從設備上下文獲取當前字體句柄,然後獲取LOGFONT結構,該結構向您提供有關您請求的字體的詳細信息。

由於API使用當前選擇的字體,改變它,你需要有可用的新字體句柄(你通常預先創建它,或以其他方式獲得HFONT字體句柄使用例如CreateFontCreateFontIndirect API)。然後,在致電DrawText之前,請使用SelectObject替換當前選定的字體,並且一旦完成,就可以將調用字體放回到另一個SelectObject調用中。