4
我有一個使用GDI的Win32 GUI應用程序。它需要在指定座標上的位圖上繪製文本,然後將其擦除並替換爲原始位圖。如何在ClearType打開時獲得真實的文本尺寸?
我的步驟如下:
- 選擇字體(GetStockObject(DEFAULT_GUI_FONT)),刷子,其他的東西到設備上下文
- 呼叫GetTextExtentPoint32()來計算所述文本的大小
- 現在具有文本起點我可以計算預期的文本矩形並存儲它
- 調用TextOut()爲相同的設備上下文具有相同的起點和相同的文本
及更高版本恢復存儲矩形的位圖。
當ClearType抗鋸齒關閉時它工作正常。但GetTextExtentPoint32()返回大小的ClearType稍小於調用TextOut()時實際佔用的文本大小。所以當我以後恢復原始位圖時,文本中的一些小條紋保留在原位,並且我有文物。
有沒有任何治療,而不禁用ClearType?
使用DrawText兩次 - 第一次用於大小計算,然後繪製工作很好,文本沒有變寬。謝謝。 – sharptooth 2009-08-12 05:49:18
缺點是DrawText只支持零擒縱和方向的字體。 – sharptooth 2009-08-12 06:06:02