使用gidplus进行文本绘制时,大家经常需要把多行文本绘制在一个矩形框中,通常采用的绘制接口是DrawText和DrawTextEx。这个两个函数确实可以实现矩形框中的多行绘制,但是,它们都没有办法在一次绘制中定制文本行距。
为了实现文本多行绘制的同时,可以定制行距,可以采用DrawTextEx方法一行行的绘制文本,然后,调整行距。其中,DRAWTEXTPARAMS结构中的uiLengthDrawn属性代表在一次绘制中,绘制了多少个字符,然后,我们就可以移动一行,绘制其余的字符,相对于GetTextExtent,非常方便了。
代码如下:
void DrawMultiLine(CDC *pDC, const CString &csText, CRect rcText, int iLineSpace)
{
if (pDC == NULL)
{
return;
}
int iLastStartPos = 0;
int iTextLen = static_cast<int>(csText.GetLength());
int iLineCount = rcText.Height() / iLineSpace;
CRect rcSubText(rcText);
// 绘制每一行文本
for (int iIndexLine = 1; iIndexLine <= iLineCount; ++iIndexLine)
{
// 判断文本是否已经绘制完
if (iLastStartPos >= iTextLen)
{
break;