使用MFC绘制垂直文本

时间:2012-01-10 12:04:08

标签: mfc drawing gdi

我正在尝试使用MFC GDI编写一些垂直文本,当我尝试将其旋转一个角度(比如说30度)时,会以某种方式将写入的图像剪辑出来。任何人都可以建议我可能是什么问题。 CreateFont定义和要写入的文本如下:

m_SmallFontVert.CreateFont(14,0,300,300,FW_BOLD, FALSE, FALSE, 0, ANSI_CHARSET,
                    OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
                    DEFAULT_QUALITY, DEFAULT_PITCH | FF_ROMAN,
                    "Arial");

我的文字:

CRect HeightRect(450,850,800,1000);
    HeightRect.MoveToXY(450,500);
    CString HeightText = "HEIGHT";
    pDC->DrawText(HeightText,HeightRect,DT_LEFT);

它给出了输出:

enter image description here

有关我可能出错的地方的任何建议吗?

2 个答案:

答案 0 :(得分:3)

我使用这组代码来获取文本的垂直显示。

CFont verFont;
verFont.CreateFont(20,10,900,0,FALSE,FALSE,FALSE,0,ARABIC_CHARSET,OUT_TT_PRECIS,
        CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_ROMAN,_T("Tahoma"))

CFont *OFont =(CFont *)pMemDC->SelectObject(&verFont);
pMemDC->TextOut(70,100,"VERTICAL");

然后我得到该文本的垂直显示。 可能这对你有帮助。

答案 1 :(得分:1)

在使用DrawText函数时,请确保将DT_NOCLIP指定为格式参数,以便它不会剪切输出。

参考: MSDN

这样的事情:

pDC->DrawText(HeightText,HeightRect,DT_LEFT | DT_NOCLIP);

希望这有帮助!