Нарисуйте вертикальный текст, используя MFC - PullRequest
0 голосов
/ 10 января 2012

Я пытаюсь написать вертикальный текст, используя 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 ]

3 голосов
/ 10 января 2012

Я использовал этот набор кода для вертикального отображения моего текста.

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 голос
/ 10 января 2012

При использовании функции DrawText убедитесь, что вы указали DT_NOCLIP в качестве параметра формата, чтобы он не обрезал ваш вывод.

Ссылка: MSDN

Примерно так:

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

Надеюсь, это поможет!

...