我的程序通過計算文本的寬度和高度將文本字符串繪製成矩形,如果矩形太大則選擇較小的字體。但最初我只使用單行文本,現在我需要一些多行內容,我曾經使用GetTextExtentPoint32,但是如果字符串中有\ n,它似乎認爲這是一個正常字符。如何計算多字符串的字體寬度和高度?
DrawText與DT_CALCRECT只返回文本的高度...
有沒有一種簡單的方法來做到這一點?
我的程序通過計算文本的寬度和高度將文本字符串繪製成矩形,如果矩形太大則選擇較小的字體。但最初我只使用單行文本,現在我需要一些多行內容,我曾經使用GetTextExtentPoint32,但是如果字符串中有\ n,它似乎認爲這是一個正常字符。如何計算多字符串的字體寬度和高度?
DrawText與DT_CALCRECT只返回文本的高度...
有沒有一種簡單的方法來做到這一點?
你應該這樣做大致是這樣的(僞代碼):
size text_dim(0,0);
foreach(line in text.split("\n"))
{
size line_dim = GetTextExtentPoint32(line.start,line.length);
text_dim.y += line_dim.y;
text_dim.x = max(text_dim.x,line_dim.x);
}
return text_dim;
您不能永久縮小字體,否則將無法閱讀。所以最終你將不得不添加一個滾動條或一個More ...按鈕或其他方式來處理它。由於你必須這樣做,玩字體大小看起來像是高成本/低迴報的活動。當然,除非客戶要求這項要求,並且您按小時付款。 – 2011-03-20 19:21:33
我在應用程序創建時加載了20個HFONT,最小的是5個高度,如果沒有字體適合矩形,那麼它將不會繪製任何東西:P和令人驚訝的性能非常好! – Kaije 2011-03-20 19:25:50