我的程序通过计算文本的宽度和高度将文本字符串绘制成矩形,如果矩形太大则选择较小的字体。但最初我只使用单行文本,现在我需要一些多行内容,我曾经使用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